如何使用一个for循环迭代2个词典?

时间:2015-01-13 20:11:35

标签: python python-2.7

我有两个数据结构,如下所示:

DATASET_0 = { 'key1': [ object1, object2, objectN ],
              'key2': [ object3, object4]
            }
DATASET_1 = { 'key1': [ object5, object6, objectN ],
              'key3': [ object7, object8],
              'key4': [ object9, object10],
            }

(这是一个高度简化的版本,但它显示了两个顶级组件 - 基本上是列表的字典)

因此,相同的键可能会出现在两个词典中,但指向不同的对象。通常我可以动态合并两个字典并迭代合并但在这种情况下我不能这样做。我无法将顶级项目列为列表。

如果顶级项目是列表,我可以这样做:

for item in DATASET_0 + DATASET_1:
    blah

无论如何使用词典做同样的事情?

2 个答案:

答案 0 :(得分:6)

itertools.chain在这样的时候是个好朋友。

from itertools import chain

d1 = {'foo': ['bar']}
d2 = {'foo': ['baz']}
for k, v in chain(d1.iteritems(), d2.iteritems()):
   print k, v

如果你想迭代键,那就更容易了(并且没有修改就可以到python3.x的端口了!)

for k in chain(d1, d2):
    print(k)

答案 1 :(得分:5)

您可以简单地连接dict.items()列表:

for key, value in DATASET_0.items() + DATASET_1.items():

或链接dict.iteritems()次迭代(使用itertools.chain()

from itertools import chain

for key, value in chain(DATASET_0.iteritems(), DATASET_1.iteritems()):