Python 串联字典
在Python编程中,最重要和最广泛使用的数据结构之一是字典。当使用Python编程时,想要混合两个或多个字典是很正常的。在这篇文章中,我们将研究在各种情况下合并两个字典的各种方法、例子和结果。但首先,让我们快速浏览一下下面的 Python 字典列表。
不像其它的数据结构只是把数据作为单一的值元素来保存,字典是一个未经排序的数据片断集合,以键值对的形式存储。通过在大括号 () 和逗号之间插入键值对,你可以建立一个字典 (,) 。此外,一个分号 (:) 被用来划分值和键元素。Python 的字典是排序的,可修改的,并且不支持重复的。
因此字典的键是不可改变的,因为字典中不可能有两个具有相同键的对象。字典的键值也是区分大小写的,因此具有相同身份但具有特定键值类型的词将被视为独立的数据块。
下面列出了在 Python 中组合两个字典的七个常用方法。
- 使用方法update()。
Python 中的 update() 函数可以用来组合两个字典。第一个字典通过被覆盖的方式与第二个字典结合。因此,它返回 None,没有形成新的字典。如果两个字典有相同的键但有不同的值,第二个字典的结果将被重写。
d_1 = {'A': 15, 'B': 10, 'C' : 12 }
d_2 = {'E': 18,'B': 20,'D' : 16 }
d_1.update(d_2)
print('Updated dictionary:')
print(d_1)
输出
{'A': 15, 'B': 20, 'C': 12, 'E': 18, 'D': 16}
- 利用合并”|”运算符
使用 | 操作符,两个字典可以被合并。这是一个非常实用的合并字典的方法;但是,它只能在Python 3.9或更高版本中使用。
def Merge(d_1, d_2):
result = d_1 | d_2
return result
dict_1 = {'A': 15, 'B': 10, 'C' : 12 }
dict_2 = {'E': 18,'B': 20,'D' : 16 }
d3 = Merge(dict_1, dict_2)
print(d3)
输出
{'A': 15, 'B': 20, 'C': 12, 'E': 18, 'D': 16}
- 使用操作符
Python 中的解包操作符 () 是合并两个字典的最简单方法。通过使用 ““运算符,字典扩展了它的内容,它是一个键值对的集合。
dict_1 = {'A': 15, 'B': 10, 'C': 12}
print(dict(**dict_1))
输出
{'A': 15, 'B': 10, 'C': 12}
现在,我们将使用符号 ““来合并两个字典,我们将使用第三个字典来记录结果。”“运算符将被用来扩展字典1和字典2中的信息,然后再将它们合并,创建字典3。与更新方法类似,如果两个字典的键相同但值不同,输出的数据将包括第二个字典的值。
dict_1 = {'A': 15, 'B': 10, 'C' : 12 }
dict_2 = {'E': 18,'B': 20,'D' : 16 }
d3 = {**dict_1,**dict_2}
print(d3)
输出
{'A': 15, 'B': 20, 'C': 12, 'E': 18, 'D': 16}
- 打开附加字典
你可以把两个字典结合起来,也可以通过用 “**”操作符解压第二个字典来获得最终的输出。由于要求第二个字典的值必须是字符串,这种方法没有被广泛使用或建议使用。任何时候出现一个int值,”TypeError “方法都会被调用。
dict_1={'A': 15, 'B': 10, 'C' : 12 }
dict_2={'E': 18,'B': 20,'D' : 16 }
d3=dict(dict_1,**dict_2)
print (d3)
输出
{'A': 15, 'B': 20, 'C': 12, 'E': 18, 'D': 16}
- 采用收集链Map()程序
使用Python合并两个字典的一个不太知名的技术就是这个。在这个函数中必须使用Chain Map库中的集合模块,以便将各种字典聚集到一个视图中。如果两个字典都包含相同的key(s),则在输出中获得第一个字典的值。
from collections import ChainMap
dict_1={'A': 15, 'B': 10, 'C' : 12 }
dict_2={'E': 18,'B': 20,'D' : 16 }
d3 = ChainMap(dict_1, dict_2)
print(d3)
print(dict(d3))
输出
ChainMap({'A': 15, 'B': 10, 'C': 12}, {'E': 18, 'B': 20, 'D': 16})
{'E': 18, 'B': 10, 'D': 16, 'A': 15, 'C': 12}
- 增加共同的键值
在上述所有方式中,如果两个字典都包括相同键的不同数据值,那么最终结果中的数字就被覆盖了。如果你想在输出中保留每一位数值,怎么办?你可以为此目的将字典结合起来,这样最终的输出结果就会被返回,而类似键的值会被添加到列表中。
为了用这种方式遍历函数中包含的字典中的值和键,我们还将利用一个for循环。这个函数以后将被用来产生下面显示的组合字典作为最终输出。
dict_1 = {'A': 15, 'B': 10, 'C': 12}
dict_2 = {'E': 18, 'B': 20, 'D': 16}
def mergeDictionary(dict_1, dict_2):
d3 = {**dict_1, **dict_2}
for key, value in d3.items():
if key in dict_1 and key in dict_2:
d3[key] = [value , dict_1[key]]
return d3
d3 = mergeDictionary(dict_1, dict_2)
print(d3)
输出
{'A': 15, 'B': [20, 10], 'C': 12, 'E': 18, 'D': 16}
一次使用许多字典是Python编程中经常出现的情况。然而,如果你不确定如何合并一个或多个字典,这可能是一个乏味的操作。因此,我们提供了在不同情况下在Python中合并字典的各种技术。