使用itertools 中的groupby 对字典数组进行分组后排序

有个需求需要对数据进行分组 然后对分组后的组内数据继续排序

from itertools import groupby

# 示例数据
data = [
    {'a': "攻击队1", 'b': '张三', 'c': 3},
    {'a': "攻击队1", 'b': '张三1', 'c': 1},
    {'a': "攻击队1", 'b': '张三2', 'c': 2},
    {'a': "攻击队2", 'b': '王五', 'c': 2},
    {'a': "攻击队2", 'b': '王五1', 'c': 4},
    {'a': "攻击队2", 'b': '王五2', 'c': 1},

    {'a': "攻击队3", 'b': 'z', 'c': 5},
    {'a': "攻击队3", 'b': 'w', 'c': 4},
    {'a': "攻击队3", 'b': 'v', 'c': 1}
]

# 首先根据'a'属性排序
data.sort(key=lambda x: x['a'])

# 使用groupby进行分组,并在每个组内按照'c'属性倒序排序
grouped_data = {
    key: sorted(group, key=lambda x: x['c'], reverse=True)
    for key, group in groupby(data, key=lambda x: x['a'])
}

# 输出结果
print(grouped_data)
posted @ 2024-09-06 11:12  干炸小黄鱼  阅读(7)  评论(0编辑  收藏  举报