📜  如何在python中合并两个具有相同键的字典(1)

📅  最后修改于: 2023-12-03 14:52:49.433000             🧑  作者: Mango

如何在Python中合并两个具有相同键的字典

有时候我们可能需要将两个具有相同键的字典合并成一个,而其中一个字典可能含有另一个字典所不包含的键值对,或者两个字典中有相同的键但是对应的值不同,我们需要按照一定的规则进行合并操作。

方式一:使用update()方法合并字典

Python自带的字典数据类型自带了update()方法,可以将一个字典合并到另一个字典中,如果有相同的键,后面的键值将会覆盖前面的键值,代码如下:

dict1 = {"name": "Tom", "age": 18, "gender": "male"}
dict2 = {"age": 20, "score": 80}
dict1.update(dict2)
print(dict1)

输出结果为:

{"name": "Tom", "age": 20, "gender": "male", "score": 80}

其中dict2中的键"age"的值覆盖了dict1中的值"age":18,其他键值按照原来的顺序合并到了dict1中。

方式二:使用collections模块中的ChainMap()函数

要想保留两个字典中的相同键的值,我们可以使用collections模块中的ChainMap()函数,代码如下:

import collections

dict1 = {"name": "Tom", "age": 18, "gender": "male"}
dict2 = {"age": 20, "score": 80}
result = collections.ChainMap(dict1, dict2)
print(result)

输出结果为:

ChainMap({'name': 'Tom', 'age': 18, 'gender': 'male'}, {'age': 20, 'score': 80})

此时,ChainMap中的键值对是按照dict1和dict2的顺序生成的,如果键相同,则会取第一个字典中的键值对。

方式三:使用字典推导式

我们也可以使用字典推导式的方式实现字典合并,代码如下:

dict1 = {"name": "Tom", "age": 18, "gender": "male"}
dict2 = {"age": 20, "score": 80}
result = {**dict1, **dict2}
print(result)

输出结果为:

{"name": "Tom", "age": 20, "gender": "male", "score": 80}

其中的双星号 ** 是Python 3.x新增的运算符,可以将字典打包为关键字参数传递给函数或字典的合并操作。

以上三种方式都可以实现字典合并的功能,具体使用哪个方式取决于实际需求和个人喜好。