python-3.x 我怎样才能将不同的字典集添加到一个[duplicate]

lymgl2op  于 2023-02-17  发布在  Python
关注(0)|答案(5)|浏览(113)
    • 此问题在此处已有答案**:

(18个答案)
5年前关闭。
假设输入是,我怎样才能把三个不同的字典集合并成一个新的呢

d1 = {'name':'tom', 'age':'14', 'sex':'m'}
d2 = {'color':'w', 'weight':'58','style':'good'}
d3 = {'sports':'cricket','music':'rock','dance':'disco'}

输出应该是d = {'name':'tom', 'age':'14', 'sex':'m','color':'w', 'weight':'58','style':'good','sports':'cricket','music':'rock','dance':'disco'}我尝试使用更新方法,它只适合两个字典,如果我使用3设置它会导致重复,所以我如何将三个字典合并为一个

guicsvcw

guicsvcw1#

如果您使用的是Python的最新版本(〉= 3.5),则可以利用unpacking in mapping literals

d1 = {'name':'tom', 'age':'14', 'sex':'m'}
d2 = {'color':'w', 'weight':'58','style':'good'}
d3 = {'sports':'cricket','music':'rock','dance':'disco'}

new_dict = {**d1, **d2, **d3}
kx5bkwkv

kx5bkwkv2#

update()将工作:

d1 = {'name':'tom', 'age':'14', 'sex':'m'}
d2 = {'color':'w', 'weight':'58','style':'good'}
d3 = {'sports':'cricket','music':'rock','dance':'disco'}

d1.update(d2)
d1.update(d3)
print(d1)
esyap4oy

esyap4oy3#

Python的方式:

{**d1, **d2, **d3}

注意字典中的重复键。

ebdffaop

ebdffaop4#

使用两行有问题吗?如果没有,我建议:

d1.update(d2)
d1.update(d3)
63lcw9qa

63lcw9qa5#

还有一种选择是使用collections.ChainMap

>>> from collections import ChainMap
>>> d1 = {'name':'tom', 'age':'14', 'sex':'m'}
>>> d2 = {'color':'w', 'weight':'58','style':'good'}
>>> d3 = {'sports':'cricket','music':'rock','dance':'disco'}
>>> result = ChainMap(d1, d2, d3)
>>> result
ChainMap({'age': '14', 'name': 'tom', 'sex': 'm'}, {'color': 'w', 'style': 'good', 'weight': '58'}, {'music': 'rock', 'dance': 'disco', 'sports': 'cricket'})

ChainMap的行为和你想要的合并后的dict差不多,你可以通过以下方法将它转换成普通的dict

>>> dict(result)
{'name': 'tom', 'dance': 'disco', 'color': 'w', 'weight': '58', 'style': 'good', 'age': '14', 'music': 'rock', 'sex': 'm', 'sports': 'cricket'}

您还可以编写一个简单的 Package 器函数以简化使用:

from collections import ChainMap

def merge_dicts(*dicts):
    return dict(ChainMap(*dicts))

注意:它是在python 3.3中引入的

相关问题