Skip to main content
 首页 » 编程设计

Python:一次遍历多个字典

2025年05月04日25sharpest

我知道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] 

请您参考如下方法:

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 

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