我有如下两个数据结构:
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
有没有办法用字典做同样的事情?
itertools.chain
在这样的时候是个好 friend 。
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)
我是一名优秀的程序员,十分优秀!