zoukankan      html  css  js  c++  java
  • 如何根据字典中值的大小, 对字典中的项排序

    将字典中的各项转换为元组,使用内置函数sorted排序

    #元组可以比较大小
    (3, 2) > (1, 4) #返回True,3 > 1
    (3, 2) > (3, 4) #返回False,2 < 4
    

    方案1:将字典中的项转化为(值,键)元组。(列表解析或zip)

    #1.列表解析
    from random import randint
    d = {k: randint(60, 100) for k in 'abcdefgh'} #产生数据
    l = [(v, k) for k, v in d.items()] #列表解析
    sorted(l, reverse=True) #倒序
    

    执行结果:

    [(97, 'e'),
     (92, 'g'),
     (87, 'b'),
     (83, 'c'),
     (76, 'f'),
     (70, 'd'),
     (68, 'h'),
     (66, 'a')]
    
    #2.zip函数
    list(zip([1, 2, 3], [4, 5, 6])) #zip函数返回的生成器对象传递给list构造器
    l = list(zip(d.values(), d.keys()))
    sorted(l, reverse=True)
    

    执行结果:

    [(99, 'e'),
     (87, 'h'),
     (87, 'a'),
     (85, 'f'),
     (81, 'd'),
     (79, 'g'),
     (75, 'b'),
     (60, 'c')]
    

    方案2:传递sorted函数的key参数

    d = {k: randint(60, 100) for k in 'abcdefgh'}
    p = sorted(d.items(), key=lambda item: item[1], reverse=True)
    d = {k: (i, v) for i, (k, v) in enumerate(p, 1)} #字典解析
    d
    

    执行结果:

    {'b': (1, 93),
     'f': (2, 90),
     'd': (3, 76),
     'a': (4, 70),
     'g': (5, 69),
     'h': (6, 68),
     'c': (7, 62),
     'e': (8, 60)}
    
  • 相关阅读:
    telegraf、influxDB、Grafana的安装与基本使用
    influxdb简单使用
    keepalived 配置文件参数详解
    haproxy acl访问限制IP
    Linux ------清除内存中的cache
    Linux释放内存空间
    火狐添加消息头 Modify Header Value (HTTP Headers)
    maven 安装jar包
    获取mapper
    root of factory hierarchy
  • 原文地址:https://www.cnblogs.com/huowuyan/p/11869087.html
Copyright © 2011-2022 走看看