我想产生以下效果:
for i, j in d.items() and k, v in c.items():
print i, j, k, v
这是错误的。我想知道如何实现这个目标?
答案 0 :(得分:19)
for (i, j), (k, v) in zip(d.items(), c.items()):
print i, j, k, v
请记住,除非您的词典是OrderedDict
,否则订单将是任意的。为了节省内存
在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
不再存在)返回{{3}而不是列表。
答案 1 :(得分:2)
你的问题不清楚,是否要在两个嵌套的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