美文网首页
Python通过Groupby实现分组

Python通过Groupby实现分组

作者: 北邮郭大宝 | 来源:发表于2021-05-10 17:35 被阅读0次

    如果有对list里的元素按照某个字段进行分组的需求的话,可以通过itertools模块中的groupby实现。

    举例,list中包含3个元素,希望通过country字段进行分组,再按组操作,通过itemgetter可以取dict中key。

    from itertools import groupby
    from operator import itemgetter
    
    lst = [
        {
            "id": 1,
            "name": "张三",
            "age": 20,
            "country": "China"
        },
        {
            "id": 2,
            "name": "李四",
            "age": 21,
            "country": "China"
        },
        {
            "id": 3,
            "name": "Tom",
            "age": 18,
            "country": "USA"
        },
    ]
    # 先排序
    lst_sorted = sorted(lst, key=itemgetter('country'))
    # groupby
    for country, items in groupby(lst_sorted, key=itemgetter('country')):
        print(country)
        for item in items:
            print(item)
    

    效果:


    1620639084486.jpg

    也可以通过lambda取dict中的字段。

    # 排序
    lst_sorted = sorted(lst, key=lambda x: x.get('country'))
    # groupby
    for country, items in groupby(lst_sorted, key=lambda x: x.get('country')):
        print(country)
        for item in items:
            print(item)
    

    除此之外,还可以实现自定义分组

    def group_by_age(item):
        if item.get("age") <= 18:
            return 'young'
        else:
            return 'adult'
    
    
    lst_sorted = sorted(lst, key=lambda x: x.get('age'))
    for tag, items in groupby(lst_sorted, key=group_by_age):
        print(tag)
        for item in items:
            print(item)
    

    效果:


    1620639057838.jpg

    相关文章

      网友评论

          本文标题:Python通过Groupby实现分组

          本文链接:https://www.haomeiwen.com/subject/ydiidltx.html