Python:一次迭代多个字典

时间:2017-03-13 20:11:44

标签: python dictionary for-loop

我知道from this answer可以同时迭代两个不同的词典:

d1 = {'a':5, 'b':6, 'c': 3}
d2 = {'a':6, 'b':7, 'c': 4}
for (k1,v1), (k2,v2) in zip(d1.items(), d2.items()):
    print k1, v1
    print k2, v2

但是如何才能有效地扩展到一个列表,例如20个不同的词典碰巧有相同的键?

mylist=[d1, d2, d3, ..., d20]

1 个答案:

答案 0 :(得分:5)

mylist = [d1, d2, d3, ..., d20]
keys = mylist[0].keys()  # they must ALL have the same keys, mind....

for k in keys:
    for d in mylist:
        print k, d[k]

直接翻译类似于:

for ... in zip(*map(dict.items, mylist)):

但你在省略号中放了什么?你必须要么命名所有这些东西,要么有一个难以操作的大元组元组。我猜你可以这样做:

for big_tuple in zip(*map(dict.items, mylist)):
    for kv in big_tuple:
        k, v = kv
        print k, v

但这比仅存储一次密钥列表并分别处理每个字典更长,更难处理。