python - 我如何将嵌套字典合并到 python 列表中?

标签 python dictionary merge add

例如如果我有结果

[{'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/

相关文章:

c++ - 在 C++ 中为 STL 映射重载 [ ] 运算符

python OrderedDict更新具有相同值的键列表

python - 按 utf-8 的降序对字典进行排序

python - 在python中合并多个表后更改重复的列名

php - 基于共同的列值将两个数组组合成一个数组

python - Python 中的 if 和 elif 用于良好的编程实践

python - 将字符串切成 3 组并重叠

python - 在列表中均匀分布(Google Foobar : Maximum Equality)

python - 支持Python 2和Python 3的标准方案

java - 我可以在java中将算法作为参数传递吗?