【问题标题】:Converting a list of dictionaries to a dictionary将字典列表转换为字典
【发布时间】:2014-02-09 05:02:40
【问题描述】:

这里是 python 的超级初学者。

我正在尝试将字典列表转换为单个字典。

所以,是这样的:

[ {'Name': 'JD', 'Number': 1}, 
  {'Name': 'Turk', 'Number': 2}, 
  {'Name': 'Carla', 'Number': 3}], 

我想改成

{'Name': 'JD', 'Number': 1, 
 'Name': 'Turk', 'Number': 2, 
 'Name': 'Carla', 'Number': 3}

我已经尝试了一段时间,并在这里查看了一堆答案,但它不起作用。

谢谢!

【问题讨论】:

  • 简短回答:如果不炸毁大部分数据,您不能这样做。键是唯一的。
  • 他可以使用索引作为key。
  • 您的预期输出是不可能的,因为字典键是唯一的。
  • 字典使用散列索引键所以两个键可以具有相同的值并且字典键是唯一的。我相信您目前的数据结构是正确的。你需要在这个字典列表上应用什么算法/操作?
  • 我只是更改了我的代码并使用了其他东西。成功了!多谢你们。我应该删除这篇文章还是?

标签: python list dictionary


【解决方案1】:

不,你不能这样做。正如 roippi 所说,键是独一无二的

试试这个:

>>> from collections import defaultdict
>>> new_dict = defaultdict(list)
>>> for d in li:
    for k, v in d.items():
        new_dict[k].append(v)

>>> new_dict
defaultdict(<class 'list'>, {'Number': [1, 2, 3], 'Name': ['JD', 'Turk', 'Carla']})

【讨论】: