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

时间:2015-08-20 12:51:50

标签: 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()}

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

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:2)

使用dict构造函数:

A = {"Y":2,"X":4}
B = {"Z":1,"Q":5}

C = dict(A, **B);