📜  Python - 将类似项目分组到字典值列表(1)

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

Python - 将类似项目分组到字典值列表

在许多数据处理任务中,我们需要将类似项目分组到字典值列表中。在Python中,我们可以使用defaultdict来轻松地完成这个任务。defaultdict是Python标准库中的一个容器,它跟普通的dict类非常类似,但是有一个区别:当试图访问不存在的键时,defaultdict会自动创建一个default值作为默认值。

在本教程中,我们将使用defaultdict来将类似项目分组到字典值列表中。

示例数据

为了演示如何使用defaultdict来将类似项目分组到字典值列表中,我们将使用以下示例数据:

data = [
    {'name': 'Alice', 'age': 20},
    {'name': 'Bob', 'age': 22},
    {'name': 'Charlie', 'age': 20},
    {'name': 'Dave', 'age': 22},
    {'name': 'Emily', 'age': 21},
]
将类似项目分组到字典值列表中

首先,我们需要导入collections模块中的defaultdict

from collections import defaultdict

然后,我们可以创建一个defaultdict并使用一个lambda函数作为其default_factory来将类似项目分组到字典值列表中。

grouped_data = defaultdict(list)
for item in data:
    grouped_data[item['age']].append(item)

在上面的代码中,我们创建了一个defaultdict,并在其default_factory中使用了一个空列表list,以确保所有未知的键都将返回一个空列表。

然后,我们遍历数据列表,并将每个数据项添加到其年龄的列表中。这将导致类似项目被分组到字典值列表中。

最后,我们可以打印出grouped_data来验证结果是否正确。

print(dict(grouped_data))

这将输出以下内容:

{20: [{'name': 'Alice', 'age': 20}, {'name': 'Charlie', 'age': 20}], 
 22: [{'name': 'Bob', 'age': 22}, {'name': 'Dave', 'age': 22}], 
 21: [{'name': 'Emily', 'age': 21}]}
整个程序
from collections import defaultdict

data = [
    {'name': 'Alice', 'age': 20},
    {'name': 'Bob', 'age': 22},
    {'name': 'Charlie', 'age': 20},
    {'name': 'Dave', 'age': 22},
    {'name': 'Emily', 'age': 21},
]

grouped_data = defaultdict(list)
for item in data:
    grouped_data[item['age']].append(item)

print(dict(grouped_data))
结论

在Python中,我们可以使用defaultdict来将类似项目分组到字典值列表中。这个方法非常简单有效,可以极大地简化数据处理任务。