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

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

在使用 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字典合并:使用|运算符在Python 3.9之前,有两种常见的合并字典的方法:使用update方法或**运算符。然而,这两种方法都有其缺点。在本文中,我们将探讨Python中合并字典的...

一文掌握Python的字典

字典是 Python 中最强大、最灵活的内置数据结构之一。它们允许存储键值对,从而实现高效的数据检索、操作和组织。本文深入探讨了字典,涵盖了它们的创建、操作和高级用法,以帮助中级 Python 开发人...

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

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

python 元组转字典

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

Python 字典的实用技巧

Python 字典(dict)是一种可变的、无序的数据结构,以键值对的形式存储数据。字典允许我们使用唯一的键来快速访问相应的值,具有查找速度快、灵活性强等优点。在实际开发中,字典被广泛用于存储和管理数...

一文讲清Python找到与字典相关的常用函数

创建字典建立一个新字典:# A tome of elements and their symbols elements = {'Hydrogen': 'H', 'Helium': 'He', 'Lit...