合并两个Python字典
Python字典是一种包含以键-值对形式存储的数据结构。每个键-值对将键映射到其相关联的值。因此,它也被称为Python字典的 关联数组 。字典的所有元素都被括在花括号{}中。此外,我们使用冒号(:)符号将键-值对分隔开,从而将每个键与其关联的值区分开来。字典元素可以以任何顺序排列并在Python程序中动态更改。在本主题中,我们将学习如何使用Python字典的各种方法来合并两个字典。
使用for循环合并两个字典
在这里,我们使用一个for循环来遍历第一个字典,并同时添加条目到另一个字典中以合并它们。
让我们考虑一个程序,使用 for 循环合并给定的字典。
forDict.py
dict1 = { 'Alexandra' : 27, # given the first dictionary in key-value pairs
'Shelina Gomez' : 22,
'James' : 29,
'Peterson' : 30
}
dict2 = {
'Jasmine' : 19, # given the second dictionary in key-value pairs
'Maria' : 26,
'Helena' : 30
}
print("Before merging the two dictionary ")
print("Dictionary No. 1 is : ", dict1) # print the dict1
print("Dictionary No. 1 is : ", dict2) # print the dict2
dict3 = dict1.copy() # Copy the dict1 into the dict3 using copy() method
for key, value in dict2.items(): # use for loop to iterate dict2 into the dict3 dictionary
dict3[key] = value
print("After merging of the two Dictionary ")
print(dict3) # print the merge dictionary
输出:
Before merging the two dictionary
Dictionary No. 1 is : {'Alexandra': 27, 'Selina Gomez': 22, 'James': 29, 'Peterson': 30}
Dictionary No. 1 is : {'Jasmine': 19, 'Maria': 26, 'Helena': 30}
After merging of the two Dictionary
{'Alexandra': 27, 'Selina Gomez': 22, 'James': 29, 'Peterson': 30, 'Jasmine': 19, 'Maria': 26, 'Helena': 30}
使用update()方法合并两个字典
在Python字典中,update()方法用于更新当前字典与第二个字典的内容。使用update()方法,我们可以避免创建一个第三个字典来存储第一个字典的元素,然后更新第二个字典的元素。
让我们考虑一个程序,在不创建第三个字典的情况下合并给定的字典。
Update1.py
d1 = {'Actress ' : 'Jasmine Wiley',
'Cricketer' : 'Nicholas Pooran',
'Basketball': 'Jordan',
'Football' : 'Zindane'
}
# Defines the d2 dictionary
d2 = {'Tennis ' : 'Maria',
'Stadium ' : 'Amsterdam',
'Basketball' : 'Washington',
'Actress' : 'Elizabeth'}
d1.update(d2) # append the d2 dictionary items into the d1 dictionary.
print( "Merge two dictionaries :")
print(d1) # print the merge dictionary
输出:
{'Actress ': 'Jasmine Wiley', 'Cricketer': 'Nicholas Pooran', 'Basketball': 'Washington', 'Football': 'Zindane', 'Tennis ': 'Maria', 'Stadium ': 'Amsterdam', 'Actress': 'Elizabeth'}
使用函数在Python中合并两个字典
考虑一个程序,使用update()方法在函数中合并给定的字典。
proFun.py
def merge_twoDict(a, b): # define the merge_twoDict() function
return (a.update(b)) # append the second dictionary (b) to the first dictionary (a)
a = {'USA' : 'New York',
'Jermany' : 'Jakarta',
'England' : 'London' }
b = {
'India' : 'Delhi',
'Russia' : 'Russian',
'Australia' : 'Sydney'
}
merge_twoDict(a, b) # pass two dictionaries to merge_twoDict() function
print("Merged Dictionaries is : ")
print(a) # print the merge dictionaries
输出:
Merged Dictionaries is :
{'USA': 'New York', 'Germany': 'Jakarta', 'England': 'London', 'India': 'Delhi', 'Russia': 'Russian', 'Australia': 'Sydney'}
使用update()方法合并两个字典,当两个字典都有相同的键时
让我们考虑一个Python程序,使用update()方法合并给定的字典,当两个字典包含相同的键时。
sameDict.py
# Defines the d1 dictionary in key- value pairs
d1 = {
'Cricketer' : 'Nicholas Pooran',
'Basketball': 'Jordan',
'Football' : 'Zindane',
'Actress' : 'Jasmine Wiley'
}
# Defines the d2 dictionary in key- value pairs
d2 = { 'Tennis' : 'Maria',
'Stadium' : 'Amsterdam',
'Basketball' : 'Washington',
'Actress' : 'Elizabeth' }
d1.update(d2) # append the d2 dictionary items into the d1 dictionary.
print( "Merge two dictionaries :")
print(d1) # print the merge dictionary
输出:
Merge two dictionaries :
{'Cricketer': 'Nicholas Pooran', 'Basketball': 'Washington', 'Football': 'Zindane', 'Actress': 'Elizabeth', 'Tennis': 'Maria', 'Stadium': 'Amsterdam'}
我们在两个字典中都有相同的键( 女演员和篮球 )。当执行update方法时,第二个字典的最新值将覆盖第一个字典的旧值。当执行d1字典时,它会输出键 女演员 和 篮球 的值 华盛顿 和 伊丽莎白 ,而不是 贾斯敏·怀利 和 乔丹 。
使用copy()和update()方法合并两个字典
在此方法中,我们使用copy()函数将第一个字典 d1 的所有元素复制到另一个字典(d3),然后将复制的数据赋给d3。然后,我们使用update()函数将字典 d2 与字典 d3 进行更新。
让我们考虑一个使用Python中copy和update()方法合并给定字典的程序。
CopyUpdate.py
dict1 = {
'Student' : 'Butler',
'Course' : 'Computer Science',
'Address' : 'Los Angeles'
}
dict2 = {
'Teacher' : 'Rosy',
'Subject' : 'Computer Science'
}
# Use Copy() function to copy the dict1 into the dict3
dict3 = dict1.copy()
print("Before Merge")
print(dict3) # print dict3 dictionary
# use update() dictionary function to update the dict3 using the dict2.
dict3.update(dict2)
print("After Merge of the two Dictionary is : ", dict3)
输出:
Before Merge
{'Student': 'Butler', 'Course': 'Computer Science', 'Address': 'Los Angeles'}
After Merge of the two Dictionary is : {'Student': 'Butler', 'Course': 'Computer Science', 'Address': 'Los Angeles', 'Teacher': 'Rosy', 'Subject': 'Computer Science'}
使用**操作符合并两个字典 – 解包操作符
解包操作符用于在单个表达式中组合两个或多个字典,并将它们存储在第三个字典中。
语法:
Res = { **dictF1, ** dictF2 }
让我们考虑一个使用 Python 中的 ** 运算符合并给定字典的程序。
Unpack.py
dict1 = {
'Student' : 'Butler',
'Course' : 'Computer Science',
'Address' : 'Los Angeles'
}
dict2 = {
'Teacher' : 'Rosy',
'Subject' : 'Computer Science'
}
dict3 = {
'Country' : 'England',
'State' : 'California',
'mob' : +3487434
}
# Use ** operator or Unpack Operator
d5 = {**dict1, **dict2}
print("Merge two dictionaries", d5) # Merge two dictionaries
d4 = {
**dict1, **dict2, **dict3
}
print("Merge more than two dictionaries", d4) # Merge multiples dictionaries
输出:
Merge two dictionaries {'Student': 'Butler', 'Course': 'Computer Science', 'Address': 'Los Angeles', 'Teacher': 'Rosy', 'Subject': 'Computer Science'}
Merge more than two dictionaries {'Student': 'Butler', 'Course': 'Computer Science', 'Address': 'Los Angeles', 'Teacher': 'Rosy', 'Subject': 'Computer Science', 'Country': 'England', 'State': 'California', 'mob': 3487434}
使用dict()构造函数合并两个字典
dict()构造函数方法类似于Python字典中的copy()和update()方法。dict()构造函数将第一个字典的元素复制到新的字典中,然后使用update()方法通过第二个字典的元素来更新新的字典。
让我们考虑一个使用Python中的dict()方法合并给定字典的程序。
Dict.py
dict1 = {
'Student' : 'Butler',
'Course' : 'Computer Science',
'Address' : 'Los Angeles'
}
dict2 = {
'Teacher' : 'Rosy',
'Subject' : 'Computer Science'
}
# Use dict() constructor
d3 = dict(dict1)
print("Before Merge", d3)
d3.update(dict2)
print("Merge two dictionaries", d3) # Merge two dictionaries
输出:
Before Merge {'Student': 'Butler', 'Course': 'Computer Science', 'Address': 'Los Angeles'}
Merge two dictionaries {'Student': 'Butler', 'Course': 'Computer Science', 'Address': 'Los Angeles', 'Teacher': 'Rosy', 'Subject': 'Computer Science'}
使用dict()构造函数和**kwargs合并两个字典
这是dict()构造函数的一个快捷方法,它使用kwargs (**)运算符来将一个字典映射到另一个字典,借助dict()方法实现。
语法:
D3 = dict(dict1, **dict)
让我们考虑一个使用Python的dict()构造函数和**kwargs运算符来合并两个字典的程序。
Kwarg.py
dict1 = {
'Student' : 'Butler',
'Course' : 'Computer Science',
'Address' : 'Los Angeles'
}
# Second dictionary is:
dict2 = {
'Teacher' : 'Rosy',
'Subject' : 'Computer Science'
}
# Use dict() constructor
d3 = dict(dict1, **dict2)
print("Merge two dictionaries", d3) # Merge two dictionaries
输出:
Merge two dictionaries {'Student': 'Butler', 'Course': 'Computer Science', 'Address': 'Los Angeles', 'Teacher': 'Rosy', 'Subject': 'Computer Science'}
使用Collections – ChainMap函数合并两个字典
ChainMap 是多个字典的集合,返回一个单一的字典。这是一种比update()方法更快的方法,可以创建一个新的字典并同时运行多个文件。要合并两个Python字典,我们需要从 collections 导入 ChainMap 。在ChainMap()函数中,我们将两个字典作为参数传递,返回一个 ChainMap 实例,通过使用dict()构造函数将字典进行合并映射。
让我们考虑一个使用ChainMap函数在Python中合并两个字典的程序。
Chain_map.py
dict1 = {
'Student' : 'Butler',
'Course' : 'Computer Science',
'Address' : 'Los Angeles'
}
dict2 = {
'Teacher' : 'Rosy',
'Subject' : 'Computer Science'
}
from collections import ChainMap # import the ChainMap from collections
# Use ChainMap() constructor
d3 = dict(ChainMap(dict1, dict2)) # passes two parameters as an argument
print("Merge two dictionaries", d3) # Merge two dictionaries
输出:
Merge two dictionaries {'Teacher': 'Rosy', 'Subject': 'Computer Science', 'Student': 'Butler', 'Course': 'Computer Science', 'Address': 'Los Angeles'}
使用itertools – chain()方法合并两个字典
这种方法创建一个迭代的字典,它从第一个可迭代字典中返回一个元素,直到它完成。然后,它继续对下一个可迭代字典进行进一步的执行。因此,它将连续的序列表示为一个单一的序列。
语法:
itertools.chain( *iterables )
让我们考虑一个使用Python中的chain函数来合并两个字典的程序。
Chain.py
dict1 = {
'Student' : 'Butler',
'Course' : 'Computer Science',
'Address' : 'Los Angeles'
}
dict2 = {
'Teacher' : 'Rosy',
'Subject' : 'Computer Science'
}
from itertools import chain # import the chain() function from itertools
# Use ChainMap() constructor
d3 = dict(chain(dict1.items(), dict2.items())) # passes two parameters as an argument
print("Merge two dictionaries", d3) # Merge two dictionaries
输出:
Merge two dictionaries {'Student': 'Butler', 'Course': 'Computer Science', 'Address': 'Los Angeles', 'Teacher': 'Rosy', 'Subject': 'Computer Science'}
使用合并 ( | ) 运算符合并两个字典
在Python中,使用合并 (|) 运算符可以合并两个字典。Python 3.9在dict类中引入了合并 ( | ) 运算符。
语法:
dict1 |= dict2
让我们编写一个程序,使用合并运算符(|)在Python中合并两个字典。
merge.py
def merge(dict1, dict):
result = dict1 | dict2 # use merge operator (|)
return result
dict1 = {'A' : 'Apple', 'B' : 'Ball', 'C' : 'Cat' } # define dict1
dict2 = {'D' : 'Dog', 'E' : 'Elephant', 'F' : 'Fish' } # define dict2
dict3 = merge(dict1, dict2) # call merge() function
print (dict3) # print dict3
输出:
{'A': 'Apple', 'B': 'Ball', 'C': 'Cat', 'D': 'Dog', 'E': 'Elephant', 'F': 'Fish'}