合并多个词典的最佳方法是什么?
What is the best way to merge multiple dictionaries?
我目前的数据结构类似于:
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()}
有没有更聪明的方法来创建这个字典?
使用字典构造函数:
A = {"Y":2,"X":4}
B = {"Z":1,"Q":5}
C = dict(A, **B);
{k: v for d in agents.values() for k, v in d.items()}
我目前的数据结构类似于:
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()}
有没有更聪明的方法来创建这个字典?
使用字典构造函数:
A = {"Y":2,"X":4}
B = {"Z":1,"Q":5}
C = dict(A, **B);
{k: v for d in agents.values() for k, v in d.items()}