📜  Python - 将元组列表分组到字典(1)

📅  最后修改于: 2023-12-03 15:33:56.913000             🧑  作者: Mango

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

在Python编程中,有时需要将元组列表按照某种规则分组到字典中。这可以通过使用Python内置函数和方法实现。

问题描述

假设我们有一个包含元组的列表,每个元组都包含一个键和一个值,且键是不同的。我们想要根据键将元组分组到字典中,使得字典的键是元组的键,而值是元组的值。下面是一个示例:

tuples = [('a', 1), ('b', 2), ('a', 3), ('c', 4), ('b', 5)]

我们要将这个列表分组到一个字典中:

{'a': [1, 3], 'b': [2, 5], 'c': [4]}
解决方法
方法 1

可以使用Python中的for循环和字典操作来实现:

tuples = [('a', 1), ('b', 2), ('a', 3), ('c', 4), ('b', 5)]

d = {}
for t in tuples:
    if t[0] not in d:
        d[t[0]] = [t[1]]
    else:
        d[t[0]].append(t[1])

print(d)

输出:

{'a': [1, 3], 'b': [2, 5], 'c': [4]}
方法 2

可以使用Python中的collections模块中的defaultdict类来实现:

from collections import defaultdict

tuples = [('a', 1), ('b', 2), ('a', 3), ('c', 4), ('b', 5)]

d = defaultdict(list)
for t in tuples:
    d[t[0]].append(t[1])

print(dict(d))

输出:

{'a': [1, 3], 'b': [2, 5], 'c': [4]}
总结

以上两种方法都可以将元组列表按照键值分组到字典中。使用Python中的collections模块中的defaultdict类可以使代码更加简洁。