MapKeyZipper¶
- class torchdata.datapipes.iter.MapKeyZipper(source_iterdatapipe: IterDataPipe, map_datapipe: MapDataPipe, key_fn: Callable, merge_fn: Optional[Callable] = None, keep_key: bool = False)¶
将来自源 IterDataPipe 的项目与来自 MapDataPipe 的项目连接(函数名称:
zip_with_map
)。匹配是通过提供的key_fn
完成的,该函数将source_iterdatapipe
中的项目映射到map_datapipe
中应该存在的键。返回值由merge_fn
创建,默认情况下它返回两个项目的元组。- 参数:
source_iterdatapipe – 来自 IterDataPipe 的项目,将与
map_datapipe
中的项目组合map_datapipe – MapDataPipe,它接收来自
key_fn
的键,并返回一个项目key_fn – 将
source_iterdatapipe
中的每个项目映射到map_datapipe
中存在的键的函数keep_key – 选项,用于在元组中与项目一起生成匹配的键,从而导致
(key, merge_fn(item1, item2))
。merge_fn – 用于组合来自
source_iterdatapipe
的项目和来自map_datapipe
的匹配项目的函数,默认情况下会创建一个元组
示例
from torchdata.datapipes.iter import IterableWrapper from torchdata.datapipes.map import SequenceWrapper def merge_fn(tuple_from_iter, value_from_map): return tuple_from_iter[0], tuple_from_iter[1] + value_from_map dp1 = IterableWrapper([('a', 1), ('b', 2), ('c', 3)]) mapdp = SequenceWrapper({'a': 100, 'b': 200, 'c': 300, 'd': 400}) res_dp = dp1.zip_with_map(map_datapipe=mapdp, key_fn=itemgetter(0), merge_fn=merge_fn) print(list(res_dp))
输出
[('a', 101), ('b', 202), ('c', 303)]