python - 合并多个词典的最佳方法是什么?

标签 python python-3.4

我目前有一个看起来像这样的数据结构:

agents = {
 'medic': {'medic1': {...}},
 'police': {'police1': {...}, 'police2': {...}},
}

子词典中的每个键都保证是唯一的。我想从这些词典中创建一个新词典(我正在编码数据,然后再将其发送到另一个程序)。

我目前的做法是:

new_dict = {}
for d in agents.values():
    new_dict.update(d)
assert new_dict == {'medic1': {...}, 'police1': {...}, 'police2': {...}}

对于非常简单的事情,这有点冗长。还有这个类轮。但与大多数衬垫一样,它开始缺乏清晰度。

from itertools import chain
new_dict = dict(chain.from_iterable(d.items() for d in agents.values()))

我也知道在 python 3.5 中我将能够做类似的事情:

new_dict = {**d for d in agents.values()}

有没有更聪明的方法来创建这个字典?

最佳答案

{k: v for d in agents.values() for k, v in d.items()}

关于python - 合并多个词典的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32118778/

相关文章:

python - Cython:具有自定义参数类型的 std::function 回调

python - numpy 库的“包含”?

python - 如何使用 gspread 在 google 工作表单元格中插入任何超链接

python语言环境货币和负数

python - 无法为 Python 3.4 创建工作虚拟环境

python - ubuntu 中没有名为 msilib.schema 的模块错误

firefox - 如何返回X元素[Selenium]?

python - Anaconda 与现有 Python 安装之间的系统 Python 冲突

python - 如何在 linux 中锁定 python 进程之间的目录?

python - Windows 上 Python 3.4 中的 Tkinter 在退出时不会将内部剪贴板数据发布到 Windows 剪贴板