Python - 将元组列表分组到字典中


在Python中,我们可以使用不同的方法将元组列表分组到字典中,例如使用for循环和条件语句、使用collections模块中的defaultdict类以及使用itertools模块中的groupby()函数。本文将探讨所有这些方法,并实现它们以将元组列表分组到字典中。

方法一:使用for循环和条件语句

此方法涉及使用for循环迭代元组列表。我们将检查字典中是否存在键,并将相应的元组作为值添加到该键。如果键不存在,我们将在字典中创建一个新的键值对。

语法

list_name.append(element)

这里,append()函数是用于向list_name结尾添加元素的列表方法。它通过将指定的元素作为新项添加到列表中来修改原始列表。

示例

在下面的示例中,我们有一个名为data的元组列表。我们初始化一个名为result的空字典。我们使用for循环迭代data列表中的每个元组。对于每个元组,我们使用索引提取键和值。如果键已存在于result字典中,我们将值附加到与该键关联的现有列表中。否则,我们将在result字典中创建一个新的键值对,键为提取的键,值为包含提取值的列表。最后,我们打印结果字典。

Open Compiler
data = [('apple', 5), ('banana', 3), ('apple', 2), ('cherry', 7), ('banana', 1)] result = {} for item in data: key = item[0] value = item[1] if key in result: result[key].append(value) else: result[key] = [value] print(result)

输出

{'apple': [5, 2], 'banana': [3, 1], 'cherry': [7]}

方法二:使用collections模块中的defaultdict类

此方法使用collections模块中的defaultdict类。defaultdict为不存在的键提供默认值,使其方便数据分组。

语法

groups = defaultdict(list)

这里,语法使用collections模块中的defaultdict()函数初始化一个名为groups的defaultdict对象,其默认值为一个空列表。第二行代码使用键(item)访问groups字典中与该键关联的列表,并将item附加到该列表。

示例

在下面的示例中,我们从collections模块导入defaultdict类。我们将result变量初始化为一个defaultdict,其默认值设置为一个空列表。其余代码与第一种方法类似,我们迭代data列表中的每个元组,提取键和值,并将值附加到result字典中相应的键。最后,在打印之前,我们使用dict()函数将result defaultdict转换为常规字典。

Open Compiler
from collections import defaultdict data = [('apple', 5), ('banana', 3), ('apple', 2), ('cherry', 7), ('banana', 1)] result = defaultdict(list) for item in data: key = item[0] value = item[1] result[key].append(value) print(dict(result))

输出

{'apple': [5, 2], 'banana': [3, 1], 'cherry': [7]}

Learn Python in-depth with real-world projects through our Python certification course. Enroll and become a certified expert to boost your career.

方法三:使用itertools模块中的groupby()函数

此方法涉及使用itertools模块中的groupby()函数。groupby()函数根据键函数对可迭代对象的元素进行分组。

语法

groups[key] = list(group)

这里,itertools模块中的groupby()函数迭代groupby对象。该函数返回键和一组具有相同值的连续项。然后使用键和组在groups字典中创建键值对,其中键是唯一值,值是分组项的列表。

示例

在下面的示例中,我们从itertools模块导入groupby()函数。在使用groupby()之前,我们使用lambda函数根据键对data列表进行排序。此步骤至关重要,因为groupby()期望具有相同键的连续元素在可迭代对象中相邻。然后,我们迭代groupby()生成的组。对于每个组,我们提取键并创建一个与该键关联的值列表。最后,我们将键值对存储在result字典中并打印它。

Open Compiler
from itertools import groupby data = [('apple', 5), ('banana', 3), ('apple', 2), ('cherry', 7), ('banana', 1)] result = {} data.sort(key=lambda x: x[0]) # Sort the data based on the key for key, group in groupby(data, key=lambda x: x[0]): result[key] = [item[1] for item in group] print(result)

输出

{'apple': [5, 2], 'banana': [3, 1], 'cherry': [7]}

结论

在本文中,我们讨论了如何使用Python中的各种方法将元组列表分组到字典中。我们探讨了三种方法:使用for循环和条件语句,使用collections模块中的defaultdict类以及使用itertools模块中的groupby()函数。每种方法都为任务提供了一种解决方案,选择哪种方法取决于个人喜好和具体需求。

更新于:2023年7月19日

455 次浏览

启动您的职业生涯

完成课程后获得认证

开始学习
广告