10

我想产生以下效果:

for i, j in d.items() and k, v in c.items():
    print i, j, k, v

这是错误的。我想知道我怎样才能做到这一点?

4

2 回答 2

19
for (i, j), (k, v) in zip(d.items(), c.items()):
   print i, j, k, v

OrderedDict请记住,除非您的字典是s ,否则顺序将是任意的。提高内存效率

在 Python 2.x(wheredict.itemszipcreate lists)中,您可以执行以下操作:

from itertools import izip
for (i, j), (k, v) in izip(d.iteritems(), c.iteritems()):
   print i, j, k, v

这不一定会更快,因为您会在小列表上观察到迭代这些中间列表会更快,但是在迭代非常大的数据结构时您会注意到速度有所提高。

在 Python 3.xzip中,与izip(不再存在) 和dict.items(dict.iteritems不再存在) 相同,返回视图而不是列表

于 2013-06-14T04:15:06.017 回答
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
于 2013-06-14T04:34:03.153 回答