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

liftword3个月前 (03-07)技术文章26

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

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

使用 "|" 求字典的并集

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

dict1 = {"a": 1, "b": 2} 
dict2 = {"b": 3, "d": 4}
dict3 = dict1 | dict2
print(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] = value
for key, value in dict2.items():
    dict3[key] = value
print(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 Counter
dict1 = {'a': 1, 'b': 2}
dict2 = {'b': 3, 'c': 4}
count_dict1 = Counter(dict1)
count_dict2 = Counter(dict2)
count_dict3 = count_dict1 + count_dict2
print(dict(count_dict3)) # 输出:{'a': 1, 'b': 5, 'c': 4}

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

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

<script type="text/javascript" src="//mp.toutiao.com/mp/agw/mass_profit/pc_product_promotions_js?item_id=7459588830274912808"></script>

相关文章

python将两个字典进行合并的方法

在 Python 中,可以使用 update() 方法将一个字典合并到另一个字典中,也可以使用运算符 | 或 ** 将两个字典合并为一个新的字典。以下是示例代码,演示了三种不同的方式来合并字典:# 定...

Python 嵌套词典完整指南

当需要在 Python 中组织复杂的分层数据时,嵌套词典是必不可少的。它们对于处理 JSON 数据、配置设置或任何具有多个级别的结构化数据特别有用。了解嵌套词典嵌套词典只是包含其他词典作为值的词典。下...

Python 字典(Dictionary):高效数据映射的强大工具

在 Python 中,字典是一种基于键值对(key-value pairs)的数据结构,能够高效地进行数据映射(data mapping)和快速查找(efficient lookup)。字典以无序(u...

如何在 Python 中创建一个不可变的字典 - Adam Johnson

Python 的内置集合类型具有可变和不可变两种风格:可变版本:list 不可变版本:tuple可变版本:set 不可变版本:frozenset可变版本:dict 不可变版本:MappingProxy...

python 元组转字典

在 Python 中,可以使用内置函数 zip() 将两个序列合并成一个字典。元组可以看作是不可变的序列,因此可以将元组作为输入序列传递给 zip() 函数,以将其转换为字典。假设我们有两个元组,一个...