在 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 中使用多种方法来做到这一点:

  1. 使用 for 循环
  2. 使用 dict.update() 方法
  3. 使用 ** 运算符
  4. 使用 | (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,则仍然可以使用上面讨论的其他方法。

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信小程序

微信扫一扫体验

立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部