Python字典合并、求和大作战,轻松搞定各路数据

云课堂学Python 2025-01-14 21:36:59

在使用 Python 采集来自不同渠道的数据,很多都是以字典的形式存储。将它们合并、处理是经常使用的进本操作,在本文中,我们将介绍多种合并和求和字典的方法。

合并词典是指涉及将多个词典中的键值对合并到一个词典中,适合整合来自不同来源的数据。字典求和指在合并字典时对键相同的相应值相加,适合在处理统计数值数据。

使用 "|" 求字典的并集

在 Python 3.9 ,引入了一个专用的并集运算符,用于轻松合并字典。

dict1 = {"a": 1, "b": 2} dict2 = {"b": 3, "d": 4}dict3 = dict1 | dict2print(dict3) 使用 update() 方法合并字典

update() 方法组合两个字典,将一个字典中的键值对合并到另一个字典中。如果目标字典中已存在键,则更新该键的值。否则,将添加新的键值对。此方法不会对键值求和。

dict1 = {'a': 1, 'b': 2}dict2 = {'b': 3, 'd': 4}dict1.update(dict2)print(dict1) # 输出:{'a': 1, 'b': 3, 'd': 4}使用循环合并字典

循环迭代两个字典中的项目并将它们添加到新词典中。如果新字典中已存在键,则更新该键的值。

dict1 = {'a': 1, 'b': 2}dict2 = {'b': 3, 'd': 4}dict3 = {}for key, value in dict1.items(): dict3[key] = valuefor key, value in dict2.items(): dict3[key] = valueprint(dict3) # 输出:{'a': 1, 'b': 3, 'd': 4}使用解包方法合并字典

使用两个星号(**)对字典进行解包合并,此方法不会对相同键的值求和。

dict1 = {"a": 1, "b": 2} dict2 = {"b": 3, "d": 4}dict3 = {**dict1, **dict2}print(dict3) # 输出:{'a': 1, 'b': 3, 'd': 4}使用字典推导对键值求和

如果想合并两个字典并对相同的键进行求和,可以创建两个集合的键的并集,并从这些键创建一个新字典。get() 方法检索每个键的值,如果字典中不存在该键,则默认为 0。

dict1 = {'a': 1, 'b': 2}dict2 = {'b': 3, 'd': 4}dict3 = {key: dict1.get(key, 0) + dict2.get(key, 0) for key in set(dict1) | set(dict2)}print(dict3) # 输出:{'a': 1, 'b': 5, 'd': 4}使用 collections 对键值求和

使用 Counter 从每个字典创建计数器。然后,合并计数器,对相同键的值求和。

from collections import Counterdict1 = {'a': 1, 'b': 2}dict2 = {'b': 3, 'c': 4}count_dict1 = Counter(dict1)count_dict2 = Counter(dict2)count_dict3 = count_dict1 + count_dict2print(dict(count_dict3)) # 输出:{'a': 1, 'b': 5, 'c': 4}

使用 defaultdict 设置一个字典为默认值,当访问一个不存在的键时,它会返回一个默认值而不是抛出 KeyError 异常。

from collections import defaultdictdict1 = {'a': 1, 'b': 2}dict2 = {'b': 3, 'c': 4}dict3 = defaultdict(int, dict1)for key, value in dict2.items(): dict3[key] += valueprint(dict3)

0 阅读:0