Python:一次遍历多个字典

FaC*_*fee 1 python dictionary for-loop

从这个答案中我知道可以一次迭代两个不同的字典:

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
Run Code Online (Sandbox Code Playgroud)

但是如何将其有效地扩展到包含20个不同的字典的列表中,而这些字典恰巧具有相同的键?

mylist=[d1, d2, d3, ..., d20]
Run Code Online (Sandbox Code Playgroud)

Ada*_*ith 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]
Run Code Online (Sandbox Code Playgroud)

直接翻译是这样的:

for ... in zip(*map(dict.items, mylist)):
Run Code Online (Sandbox Code Playgroud)

但是您将省略号放在什么位置?您必须命名所有这些东西,或者拥有一个难以操作的大元组。我猜你也可以做:

for big_tuple in zip(*map(dict.items, mylist)):
    for kv in big_tuple:
        k, v = kv
        print k, v
Run Code Online (Sandbox Code Playgroud)

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