【问题标题】:Python: iterating over multiple dictionaries at oncePython:一次迭代多个字典
【发布时间】:2017-03-13 20:11:44
【问题描述】:

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

【问题讨论】:

标签: python dictionary for-loop


【解决方案1】:
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

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

【讨论】:

    猜你喜欢
    • 2019-12-05
    • 2021-02-07
    • 1970-01-01
    • 2021-10-05
    • 2013-12-03
    • 1970-01-01
    • 1970-01-01
    • 2016-08-18
    相关资源
    最近更新 更多