下面是一个示例代码,演示如何按元组值对字典列表进行分组:
from itertools import groupby
# 定义一个字典列表
data = [
{"name": "John", "age": 25},
{"name": "Emily", "age": 30},
{"name": "Mark", "age": 25},
{"name": "Anna", "age": 30},
{"name": "Eric", "age": 25}
]
# 按元组值对字典列表进行分组
data.sort(key=lambda x: (x['age'], x['name'])) # 先按年龄排序,在按名字排序
grouped_data = groupby(data, key=lambda x: (x['age'], x['name'])) # 根据年龄和名字分组
# 打印分组结果
for key, group in grouped_data:
print(f"Group {key}:")
for item in group:
print(item)
print()
运行上述代码的输出结果将是:
Group (25, 'Eric'):
{'name': 'Eric', 'age': 25}
Group (25, 'John'):
{'name': 'John', 'age': 25}
Group (25, 'Mark'):
{'name': 'Mark', 'age': 25}
Group (30, 'Anna'):
{'name': 'Anna', 'age': 30}
Group (30, 'Emily'):
{'name': 'Emily', 'age': 30}
代码中使用了itertools
模块的groupby
函数,该函数接收一个可迭代对象和一个可选的关键字函数,返回一个生成器,生成按照关键字函数分组后的元素。在这里,我们使用了一个lambda函数作为关键字函数,根据字典的age
和name
值来分组字典列表。