我知道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]
答案 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
但这比仅存储一次密钥列表并分别处理每个字典更长,更难处理。