首页 > 编程语言 > 详细

Python中itemgetter和groupby连用(字典分组函数)

时间:2021-06-02 21:27:51      阅读:26      评论:0      收藏:0      [点我收藏+]
list1 = [
    {spec: D, serial_num: 4, no: 3},
    {spec: B, serial_num: 3, no: 2},
    {spec: C, serial_num: 1, no: 4},
    {spec: A, serial_num: 2, no: 1},
]


def func(h):
    if h[serial_num] > 2:
        return 
    else:
        return 


for k, value in groupby(list1, key=func):
    print(k)
    print(list(value))

# 结果比较有意思如下
大
[{spec: D, serial_num: 4, no: 3}, {spec: B, serial_num: 3, no: 2}]
小
[{spec: C, serial_num: 1, no: 4}, {spec: A, serial_num: 2, no: 1}]
from operator import itemgetter
from itertools import groupby


cage_no = [
    {spec: A, serial_num: 1, no: 1},
    {spec: D, serial_num: 1, no: 1},
    {spec: C, serial_num: 3, no: 4},
    {spec: B, serial_num: 3, no: 4},
    {spec: A, serial_num: 4, no: 3},
    {spec: D, serial_num: 4, no: 3},
    {spec: C, serial_num: 2, no: 2},
    {spec: B, serial_num: 2, no: 2},
    {spec: A, serial_num: 4, no: 4},
    {spec: D, serial_num: 4, no: 4},
    {spec: C, serial_num: 1, no: 3},
    {spec: B, serial_num: 1, no: 3},
    {spec: A, serial_num: 2, no: 1},
    {spec: D, serial_num: 2, no: 1},
    {spec: C, serial_num: 3, no: 2},
    {spec: B, serial_num: 3, no: 2},
]
cage_no1 = sorted(cage_no, key=itemgetter(spec, serial_num, no))
print(cage_no1)  # 这个可能可以满足部分需求, 在不需要操作key的情况下
print(* * 30)

# itemgetter和groupby结合使用的代码
cage_no.sort(key=itemgetter(spec))
for k, v in groupby(cage_no, itemgetter(spec)):
    # print(k)
    # print(list(v))
    cage = list(v)
    cage.sort(key=itemgetter(serial_num))
    for key, value in groupby(cage, itemgetter(serial_num)):
        # print(key)
        # print(list(value))
        ca = list(value)
        ca.sort(key=itemgetter(no))
        for ke, va in groupby(ca, itemgetter(no)):
            print(ke)
            print(list(va))

 

Python中itemgetter和groupby连用(字典分组函数)

原文:https://www.cnblogs.com/liang715200/p/14842751.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!