我想生成以下效果:
for i, j in d.items() and k, v in c.items():
print i, j, k, v
这是错误的。我想知道如何实现这个?
我想生成以下效果:
for i, j in d.items() and k, v in c.items():
print i, j, k, v
这是错误的。我想知道如何实现这个?
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
对于小型列表,迭代这些中间列表可能会更快,但不一定快。当迭代非常大的数据结构时,您将会注意到速度的提升。
在Python3.x中,zip
与izip
(已不存在)相同,并且dict.items
(dict.iteritems
不再存在)返回一个视图,而不是一个列表。
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
的结果类似于在两个嵌套的for循环中迭代字典,而jamylak的答案使用zip
则类似于两个相邻的for循环。 - lvc