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

    案例1:
    某班语文科目的成绩以字典形式存储,形式为:{"lili":89,"wenwen":91 ...}
    根据成绩高低,计算学生的排名

    解决方案:
    使用内置函数sorted
    1,利用zip将字典数据转化为元组
    2,传递sorted函数的key参数

    # eg_v1 利用zip将字典数据转化为元组

    from random import randint
    stud = {x:randint(60,100) for x in "abcdefghjk"} # 创建随机的成绩单字典
    print(stud)
    # {'a': 89, 'b': 87, 'd': 83, 'j': 97, 'e': 74, 'f': 75, 'h': 97, 'g': 61, 'c': 62, 'k': 90}
    print(stud.keys()) # 得到字典的键
    # dict_keys(['a', 'b', 'd', 'j', 'e', 'f', 'h', 'g', 'c', 'k'])
    print (stud.values()) # 得到字典的值
    # dict_keys(['a', 'b', 'd', 'j', 'e', 'f', 'h', 'g', 'c', 'k'])
    
    z = zip(stud.values(),stud.keys())
    print (sorted(z))
    # [(61, 'g'), (62, 'c'), (74, 'e'), (75, 'f'), (83, 'd'), (87, 'b'), (89, 'a'), (90, 'k'), (97, 'h'), (97, 'j')]
    

      

    # eg_v2 传递sorted函数的key参数

    from random import randint
    
    rest = {x:randint(60,100) for x in "abcdefghjk"} # 创建随机的成绩单字典
    print (rest)
    # {'h': 96, 'j': 95, 'b': 97, 'g': 78, 'f': 64, 'k': 81, 'd': 72, 'e': 69, 'c': 93, 'a': 61}
    print (rest.items())
    # dict_items([('h', 96), ('j', 95), ('b', 97), ('g', 78), ('f', 64), ('k', 81), ('d', 72), ('e', 69), ('c', 93), ('a', 61)])
    result = sorted(rest.items(),key = lambda x:x[1])
    print (result)
    # [('a', 61), ('f', 64), ('e', 69), ('d', 72), ('g', 78), ('k', 81), ('c', 93), ('j', 95), ('h', 96), ('b', 97)]
    

      

  • 相关阅读:
    DIY组装机
    伯努利数学习笔记的说...
    心得分享 | 软件研发效能(1)
    开发板烧录教程
    解决Windows7/10系统连接网线后显示“未识别的网络”的问题
    雷达扫描
    经验学习
    1045 Access denied for user 'root'@'localhost' (using password:YES)
    json格式化工具
    mysql安装出现error Nr.1045
  • 原文地址:https://www.cnblogs.com/xieshengsen/p/7190303.html
Copyright © 2011-2022 走看看