千锋教育-做有情怀、有良心、有品质的职业教育机构

手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

当前位置:首页  >  技术干货  > List根据某个字段分组

List根据某个字段分组

来源:千锋教育
发布人:xqq
时间: 2023-11-22 04:15:08 1700597708

一、按某个字段分组

在Python语言中,使用groupby()函数可以将list按照某个字段进行分组。首先,我们需要对list按照指定字段进行排序。然后,使用groupby()函数对排序后的list进行分组。下面是实现的代码示例:

from itertools import groupby

# 对list进行排序
lst = [{'name': 'Alice', 'age': 25}, {'name': 'Bob', 'age': 22}, {'name': 'Charlie', 'age': 28}, {'name': 'David', 'age': 22}]
lst.sort(key=lambda x: x['age'])

# 对排序后的list进行分组
groups = []
for k, g in groupby(lst, key=lambda x: x['age']):
    groups.append(list(g))

print(groups)

在代码中,我们定义了一个dict类型的list,并按照年龄字段进行排序。然后,使用groupby()函数进行分组,将每个分组保存到一个新的list中。运行上面的代码,我们可以得到以下输出结果:

[
    [
        {'age': 22, 'name': 'Bob'},
        {'age': 22, 'name': 'David'}
    ],
    [
        {'age': 25, 'name': 'Alice'}
    ],
    [
        {'age': 28, 'name': 'Charlie'}
    ]
]

可以看到,list中的dict按照年龄字段进行了分组,并将每个分组保存到一个新的list中。

二、List数组根据某个字段排序

在上述代码示例中,我们需要对list按照指定字段进行排序。那么如何实现对list数组按照某个字段进行排序呢?我们可以使用Python内置的sorted()函数进行排序。下面是实现的代码示例:

lst = [{'name': 'Alice', 'age': 25}, {'name': 'Bob', 'age': 22}, {'name': 'Charlie', 'age': 28}, {'name': 'David', 'age': 22}]
lst = sorted(lst, key=lambda x: x['age'])

print(lst)

在代码中,我们对dict类型的list按照年龄字段进行排序,并将排序结果保存到了原来的lst变量中。运行上述代码,我们可以得到以下输出结果:

[
    {'name': 'Bob', 'age': 22},
    {'name': 'David', 'age': 22},
    {'name': 'Alice', 'age': 25},
    {'name': 'Charlie', 'age': 28}
]

可以看到,list中的dict按照年龄字段进行了排序。

三、List根据两个字段去重分组

有时候,我们需要对list中的数据按照两个字段进行去重分组。为了实现这个功能,我们可以使用Python中的set()函数。下面是实现的代码示例:

lst = [{'name': 'Alice', 'age': 25}, {'name': 'Bob', 'age': 22}, {'name': 'Charlie', 'age': 22}, {'name': 'David', 'age': 25}]
# 使用set()函数去重
unique_data = [dict(t) for t in set([tuple(d.items()) for d in lst])]
# 对去重后的数据按照年龄字段和姓名字段进行分组
groups = {}
for d in unique_data:
    age = d['age']
    name = d['name']
    if age not in groups:
        groups[age] = {}
    if name not in groups[age]:
        groups[age][name] = []
    groups[age][name].append(d)

print(groups)

在代码中,我们使用set()函数对dict类型的list进行去重,并保存到unique_data变量中。然后,我们对去重后的数据按照年龄字段和姓名字段进行分组,并将每个分组保存到一个新的dict中。运行上述代码,我们可以得到以下输出结果:

{
    22: {
        "Bob": [{"name": "Bob", "age": 22}], 
        "Charlie": [{"name": "Charlie", "age": 22}]
    }, 
    25: {
        "Alice": [{"name": "Alice", "age": 25}], 
        "David": [{"name": "David", "age": 25}]
    }
}

可以看到,list中的dict按照年龄字段和姓名字段进行了去重分组,并将每个分组保存到了一个新的dict中。

声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。
10年以上业内强师集结,手把手带你蜕变精英
请您保持通讯畅通,专属学习老师24小时内将与您1V1沟通
免费领取
今日已有369人领取成功
刘同学 138****2860 刚刚成功领取
王同学 131****2015 刚刚成功领取
张同学 133****4652 刚刚成功领取
李同学 135****8607 刚刚成功领取
杨同学 132****5667 刚刚成功领取
岳同学 134****6652 刚刚成功领取
梁同学 157****2950 刚刚成功领取
刘同学 189****1015 刚刚成功领取
张同学 155****4678 刚刚成功领取
邹同学 139****2907 刚刚成功领取
董同学 138****2867 刚刚成功领取
周同学 136****3602 刚刚成功领取

上一篇

解析getrequest

下一篇

unsafe-url详解
相关推荐HOT