首页 > 解决方案 > 如何以可变的 dict 长度同时迭代 dict 项?

问题描述

我想遍历具有n键和值的字典。

例如:

d = {0:"batched data", 1:"batched data", 2:"batched data", ..., n: "batched data"}

由于批处理数据是 pytorch DataLoader形式的,因此它不能索引,只能迭代。

因此,我如何一次遍历所有 dict 批处理数据:

我在想 zip 可能有用,但是当长度可变时我不确定如何计算它。

例如,如果n=3

for index, data in enumerate(zip(d[0],d[1],d[2])):

会起作用,但是如何将其推广到任意数量的 dict 元素?

标签: pythonpytorch

解决方案


查看命令的输出:

for index, data in enumerate(zip(d[0],d[1],d[2])):
    print("{} -> {}".format(index, data))

在我看来,这将处理一般情况:

d = {0:"batched data", 1:"batched data", 2:"batched data", 3: "batched data"}

for index, data in enumerate(zip(*d.values())):
    print("{} -> {}".format(index, data))

输出:

0 -> ('b', 'b', 'b', 'b')
1 -> ('a', 'a', 'a', 'a')
2 -> ('t', 't', 't', 't')
3 -> ('c', 'c', 'c', 'c')
4 -> ('h', 'h', 'h', 'h')
5 -> ('e', 'e', 'e', 'e')
6 -> ('d', 'd', 'd', 'd')
7 -> (' ', ' ', ' ', ' ')
8 -> ('d', 'd', 'd', 'd')
9 -> ('a', 'a', 'a', 'a')
10 -> ('t', 't', 't', 't')
11 -> ('a', 'a', 'a', 'a')

推荐阅读