zoukankan      html  css  js  c++  java
  • 分组函数(groupby、itemgetter)

    from itertools import groupby
    from operator import itemgetter
    
    d1={'name':'liuyi','age':25,'city':'SZ'}
    d2={'name':'chener','age':18,'city':'SH'}
    d3={'name':'zhangsan','age':23,'city':'GZ'}
    d4={'name':'lisi','age':24,'city':'HZ'}
    d5={'name':'wangwu','age':22,'city':'BJ'}
    d6={'name':'zhangliu','age':21,'city':'WH'}
    lis = [d1,d2,d3,d4,d5,d6]
    
    lis.sort(key=itemgetter('city'))        # 使用groupby需要先排序
    
    lst_grou = groupby(lis,itemgetter('city'))  # itemgetter('city') 相当于 key = lambda x:x['city']
    for key,group in lst_grou:                  # group 使一个迭代器,包含了所有的分组
        for g in group:
            print(key,g)
            
    '''
    结果
    BJ {'name': 'wangwu', 'age': 22, 'city': 'BJ'}
    GZ {'name': 'zhangsan', 'age': 23, 'city': 'GZ'}
    HZ {'name': 'lisi', 'age': 24, 'city': 'HZ'}
    SH {'name': 'chener', 'age': 18, 'city': 'SH'}
    SZ {'name': 'liuyi', 'age': 25, 'city': 'SZ'}
    WH {'name': 'zhangliu', 'age': 21, 'city': 'WH'}
    '''
    from itertools import groupby
    from operator import itemgetter
    
    d1={'name':'liuyi','age':25,'city':'SZ'}
    d2={'name':'chener','age':18,'city':'SH'}
    d3={'name':'zhangsan','age':23,'city':'GZ'}
    d4={'name':'lisi','age':24,'city':'SZ'}
    d5={'name':'wangwu','age':22,'city':'BJ'}
    d6={'name':'zhangliu','age':21,'city':'WH'}
    lis = [d1,d2,d3,d4,d5,d6]
    
    lis.sort(key=itemgetter('city'))        # 使用groupby需要先排序
    
    lst_grou = groupby(lis,itemgetter('city'))  # itemgetter('city') 相当于 key = lambda x:x['city]
    print([key for key,group in lst_grou])      # 列表推导式,会自动去重
    
    '''
    结果
    ['BJ', 'GZ', 'SH', 'SZ', 'WH']
    '''
    print(dict([(key,list(group)) for key,group in lst_grou]))  # 获取字典
    
    '''
    结果
    {'BJ': [{'name': 'wangwu', 'age': 22, 'city': 'BJ'}], 
    'GZ': [{'name': 'zhangsan', 'age': 23, 'city': 'GZ'}], 
    'SH': [{'name': 'chener', 'age': 18, 'city': 'SH'}], 
    'SZ': [{'name': 'liuyi', 'age': 25, 'city': 'SZ'}, {'name': 'lisi', 'age': 24, 'city': 'SZ'}], 
    'WH': [{'name': 'zhangliu', 'age': 21, 'city': 'WH'}]}
    '''
  • 相关阅读:
    Spring Cloud(面试必备):服务雪崩、降级与熔断
    SpringCloud 分布式事务解决方案
    2020年3月25java现场面试(有点料)
    SpringCloud Feign工作原理
    MySQL数据库引擎详解
    MySQL Hardware--CentOS 6修改CPU性能模式
    MySQL Hardware--网络测试
    MySQL Execution Plan--EXPLAIN用法
    MySQL Event--Event and EventScheduler
    MySQL Error--Error Code
  • 原文地址:https://www.cnblogs.com/st-st/p/9676756.html
Copyright © 2011-2022 走看看