IterToMapConverter¶
- class torchdata.datapipes.map.IterToMapConverter(datapipe: IterDataPipe, key_value_fn: Optional[Callable] = None)¶
延迟加载来自
IterDataPipe
的数据,以使用由key_value_fn
生成的键值对构造MapDataPipe
(函数名:to_map_datapipe
)。如果未给出key_value_fn
,则源 IterDataPipe 中的每个数据本身必须是一个恰好包含两个对象的迭代器。每个项目的第一个对象成为新字典中的键,第二个对象成为对应的值。对于相反的转换器,请使用
MapToIterConverter
。- 参数:
datapipe – 源 IterDataPipe
key_value_fn – 应用于每个数据以生成键值对的函数
注意
如果添加的键已存在,则相应的 value 将被新 value 替换。
示例
>>> from torchdata.datapipes.iter import IterableWrapper >>> source_dp = IterableWrapper([(i, i) for i in range(10)]) >>> map_dp = source_dp.to_map_datapipe() >>> list(map_dp) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> source_dp2 = IterableWrapper([('a', 1), ('b', 2), ('c', 1)]) >>> map_dp2 = source_dp2.to_map_datapipe() >>> map_dp2['a'] 1 >>> def row_to_tuple(row): >>> label = row[0] >>> data = row[1:] >>> return label, data >>> source_dp3 = IterableWrapper([('a', 1, 1, 1, 1, 1, 1), ('b', 2, 2, 2, 2, 2, 2), ('c', 3, 3, 3, 3, 3, 3)]) >>> map_dp3 = source_dp3.to_map_datapipe(key_value_fn=row_to_tuple) >>> map_dp3['a'] (1, 1, 1, 1, 1, 1)