Python list列表groupby分组用法

  • Python list列表groupby分组用法
  • 注意分组之前应先使用分组字段先排好序
from itertools import groupby

user_list = [
    {"uid": 1, "sex": "男", "age": 10},
    {"uid": 3, "sex": "男", "age": 20},
    {"uid": 4, "sex": "女", "age": 20},
    {"uid": 4, "sex": "女", "age": 31},
    {"uid": 2, "sex": "男", "age": 10}
]
# 多字段分组
user_sort = sorted(user_list, key=lambda x: (x["sex"], x["age"]))
# 多字段分组
user_group = groupby(user_sort, key=lambda x: (x["sex"], x["age"]))
for key, group in user_group:
    print(key, list(group))


print("自定义分组key")


# 自定义分组key
def g(x):
    if (x['age'] > 0) and (x['age'] <= 10):
        return 'small'
    elif (x['age'] > 10) and (x['age'] <= 20):
        return 'mid'
    else:
        return 'max'


user_sort = sorted(user_list, key=lambda x: x["age"])
user_group = groupby(user_sort, key=g)
for key, group in user_group:
    print(key, list(group))
  • 运行结果
('女', 20) [{'uid': 4, 'sex': '女', 'age': 20}]
('女', 31) [{'uid': 4, 'sex': '女', 'age': 31}]
('男', 10) [{'uid': 1, 'sex': '男', 'age': 10}, {'uid': 2, 'sex': '男', 'age': 10}]
('男', 20) [{'uid': 3, 'sex': '男', 'age': 20}]
#自定义分组key
small [{'uid': 1, 'sex': '男', 'age': 10}, {'uid': 2, 'sex': '男', 'age': 10}]
mid [{'uid': 3, 'sex': '男', 'age': 20}, {'uid': 4, 'sex': '女', 'age': 20}]
max [{'uid': 4, 'sex': '女', 'age': 31}]
  • 12
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值