例如如果我有结果
[{'Germany': {"Luge - Men's Singles": 'Gold'}},
{'Germany': {"Luge - Men's Singles": 'Silver'}},
{'Italy': {"Luge - Men's Singles": 'Bronze'}}]
[{'Germany': {"Luge - Women's Singles": 'Gold'}},
{'Austria': {"Luge - Women's Singles": 'Silver'}},
{'Germany': {"Luge - Women's Singles": 'Bronze'}}]
[{'Austria': {'Luge - Doubles': 'Gold'}},
{'Latvia': {'Luge - Doubles': 'Silver'}},
{'Germany': {'Luge - Doubles': 'Bronze'}}]
我该如何排序才能使德国等赢得的所有赛事都归于同一个冠军头衔。 即德国将是德国:无 Helm 雪橇 - 男子单打:金牌、银牌、无 Helm 雪橇 - 女子单打:金牌、铜牌、无 Helm 雪橇 - 双人:铜牌。
谢谢你的帮助
编辑:这是从 python shell 直接复制和粘贴以帮助混淆:
[{'Germany': {"Luge - Men's Singles": 'Gold'}}, {'Germany': {"Luge - Men's Singles": 'Silver'}}, {'Italy': {"Luge - 男子单打”:‘铜牌’}}] [{'Germany': {"Luge - Women's Singles": 'Gold'}}, {'Austria': {"Luge - Women's Singles": 'Silver'}}, {'Germany': {"Luge - Women's Singles “: '青铜'}}] [{'Austria': {'Luge - Doubles': 'Gold'}}, {'Latvia': {'Luge - Doubles': 'Silver'}}, {'Germany': {'Luge - Doubles': '青铜'}}]
抱歉我是这个网站的新手。它针对每个不同的事件循环 3 次,我想知道我是否可以在最后一个循环后通过合并它来获得所需的结果?
最佳答案
import collections
merged_result = collections.defaultdict(list)
for L in listoflistsofdicts:
for d in L:
for k in d:
merged_result[k].append(d[k])
或者如果您只有一个字典列表而不是一个字典列表列表(很难从您的 Q 中说出来!-),那么就是
for d in listofdicts:
for k in d:
merged_result[k].append(d[k])
循环的一部分。
如果您想要字符串而不是列表作为 merged_result
的值,那么在上面的代码之后添加
for k in merged_result:
merged_result[k] = ', '.join(merged_result[k])
或者,等效地(但是构建一个新的普通字典而不是默认字典):
merged_result = dict((k, ', '.join(v)) for k, v in merged_result.iteritems())
(假设是 Python 2.*——在 Python 3 中,使用 .items
而不是 .iteritems
)。
编辑:查看示例代码,它似乎是字典列表列表的无效语法(缺少逗号),所以我也展示了如何处理它。
关于python - 我如何将嵌套字典合并到 python 列表中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2646480/