在 Python 中,字典是用于成对存储数据的集合 {key:value}
。字典有序且可变,并且不能存储重复数据。
我们使用花括号来编写字典,如下所示:
my_dict = {
"id": 1,
"name": "Ashutosh",
"books": ["Python", "DSA"]
}
有时,我们需要合并两个或多个词典来创建更大的词典。例如:
dict_one = {
"id": 1,
"name": "Ashutosh",
"books": ["Python", "DSA"]
}
dict_two = {
"college": "NSEC",
"city": "Kolkata",
"country": "India"
}
merged_dict = {
"id": 1,
"name": "Ashutosh",
"books": ["Python", "DSA"],
"college": "NSEC",
"city": "Kolkata",
"country": "India"
}
在 中, merged_dict
和 dict_one
的键值对 dict_two
。这就是我们希望通过编程实现的。
我们可以在 Python 中使用多种方法来做到这一点:
- 使用 for 循环
-
使用
dict.update()
方法 -
使用
**
运算符 -
使用
|
(Union) 运算符(适用于 Python 3.9 及更高版本)
让我们逐一探索每一种方法。
如何使用 For 循环合并 Python 中的字典
我们可以使用 for 循环合并两个或多个字典,如下所示:
>>> dict_one = {
... "id": 1,
... "name": "Ashutosh",
... }
>>> dict_two = {
... "books": ["Python", "DSA"],
... "college": "NSEC",
... }
>>> dict_three = {
... "city": "Kolkata",
... "country": "India"
... }
>>> for key,value in dict_two.items():
... merged_dict[key] = value
...
>>> merged_dict
{'id': 1, 'name': 'Ashutosh', 'books': ['Python', 'DSA'], 'college': 'NSEC'}
>>> for key,value in dict_three.items():
... merged_dict[key] = value
...
>>> merged_dict
{'id': 1, 'name': 'Ashutosh', 'books': ['Python', 'DSA'], 'college': 'NSEC', 'city': 'Kolkata', 'country': 'India'}
但是这种方法的问题在于我们需要运行很多次循环来合并字典。
那么还有其他选择吗?
如何使用 dict.update()
方法
如果你探索这个 dict
类,你会发现里面有各种各样的方法。其中一种方法就是 update()
你可以使用将一个字典合并到另一个字典中的方法。
>>> dict_one = {
... "id": 1,
... "name": "Ashutosh",
... "books": ["Python", "DSA"]
... }
>>> dict_two = {
... "college": "NSEC",
... "city": "Kolkata",
... "country": "India"
... }
>>> dict_one.update(dict_two)
>>> dict_one
{'id': 1, 'name': 'Ashutosh', 'books': ['Python', 'DSA'], 'college': 'NSEC', 'city': 'Kolkata', 'country': 'India'}
但是使用该 update()
方法的问题是它会修改其中一个字典。如果我们想创建第三个字典而不修改其他字典,我们就不能使用这个方法。
此外,此方法一次只能合并两本词典。若要合并三本词典,则需要先合并前两本词典,再将第三本词典与修改后的词典合并。
>>> dict_one = {
... "id": 1,
... "name": "Ashutosh",
... }
>>> dict_two = {
... "books": ["Python", "DSA"],
... "college": "NSEC",
... }
>>> dict_three = {
... "city": "Kolkata",
... "country": "India"
... }
>>> dict_one.update(dict_two)
>>> dict_one
{'id': 1, 'name': 'Ashutosh', 'books': ['Python', 'DSA'], 'college': 'NSEC'}
>>> dict_one.update(dict_three)
>>> dict_one
{'id': 1, 'name': 'Ashutosh', 'books': ['Python', 'DSA'], 'college': 'NSEC', 'city': 'Kolkata', 'country': 'India'}
让我们探索一些其他的选择。
如何使用运算符合并 Python 中的 **
字典
您可以使用双星号(**)方法来解包或扩展字典,如下所示:
>>> dict_one = {
... "id": 1,
... "name": "Ashutosh",
... }
>>> dict_two = {
... "books": ["Python", "DSA"]
... "college": "NSEC",
... }
>>> dict_three = {
... "city": "Kolkata",
... "country": "India"
... }
>>> merged_dict = {**dict_one, **dict_two, **dict_three}
>>> merged_dict
{'id': 1, 'name': 'Ashutosh', 'books': ['Python', 'DSA'], 'college': 'NSEC', 'city': 'Kolkata', 'country': 'India'}
使用 **
运算符合并字典不会影响任何字典。
如何使用运算符合并 Python 中的 |
字典
从 Python 3.9 开始,我们可以使用 Union( |
) 运算符来合并两个或多个字典。
>>> dict_one = {
... "id": 1,
... "name": "Ashutosh",
... }
>>> dict_two = {
... "books": ["Python", "DSA"],
... "college": "NSEC",
... }
>>> dict_three = {
... "city": "Kolkata",
... "country": "India"
... }
>>> merged_dict = dict_one | dict_two | dict_three
>>> merged_dict
{'id': 1, 'name': 'Ashutosh', 'books': ['Python', 'DSA'], 'college': 'NSEC', 'city': 'Kolkata', 'country': 'India'}
这是 Python 中合并字典最方便的方法。
结论
我们探索了几种合并字典的不同方法。如果您使用的是 Python 3.9 或更高版本,则应使用运算符 |
。但是,如果您使用的是旧版本的 Python,则仍然可以使用上面讨论的其他方法。
发表评论 取消回复