【发布时间】:2013-06-10 15:49:51
【问题描述】:
我想生成如下效果:
for i, j in d.items() and k, v in c.items():
print i, j, k, v
这是错误的。我想知道我怎样才能做到这一点?
【问题讨论】:
标签: python dictionary
我想生成如下效果:
for i, j in d.items() and k, v in c.items():
print i, j, k, v
这是错误的。我想知道我怎样才能做到这一点?
【问题讨论】:
标签: python dictionary
for (i, j), (k, v) in zip(d.items(), c.items()):
print i, j, k, v
请记住,除非您的字典是 OrderedDicts,否则顺序将是任意的。提高内存效率
在 Python 2.x(dict.items 和 zip 创建列表)中,您可以执行以下操作:
from itertools import izip
for (i, j), (k, v) in izip(d.iteritems(), c.iteritems()):
print i, j, k, v
这不一定会更快,因为您会发现在小列表上迭代这些中间列表会更快,但是在迭代非常大的数据结构时您会发现速度有所提高。
在 Python 3.x 中,zip 与 izip(不再存在)相同,dict.items(dict.iteritems 不再存在)返回 view 而不是 列表 em>。
【讨论】:
您的问题并不清楚,您是想在两个嵌套的 for 循环中迭代字典,还是并排(如 @jamylak 的回答中所做的那样)
这是嵌套解释
from itertools import product
for (i, j), (k, v) in product(d.items(), c.items()):
print i, j, k, v
例如
>>> d={'a':'Apple', 'b':'Ball'}
>>> c={'1':'One', '2':'Two'}
>>> from itertools import product
>>> for (i, j), (k, v) in product(d.items(), c.items()):
... print i, j, k, v
...
a Apple 1 One
a Apple 2 Two
b Ball 1 One
b Ball 2 Two
【讨论】:
product 给出了与在两个 nested 中迭代字典类似的结果 -循环,而 jamylak 使用 zip 的答案给出了与两个 adjacent for-loops 相似的结果。