zoukankan      html  css  js  c++  java
  • python学习--根据字典中的值的大小,对字典的项进行排序。

    首先生成一个随机字典:

    from random import randint
    d={x:randint(60,99) for x in "abcdefg"} # {'a': 62, 'b': 97, 'c': 87, 'd': 68, 'e': 91, 'f': 76, 'g': 88}

    第一种方式,利用collections的子类Counter从大到小排序:
    from collections import Counter
    d={x:randint(60,99) for x in "abcdefg"}
    c=Counter(d).most_common() #返回一个列表,按照dict的value从大到小排序[('b', 99), ('g', 89), ('d', 74), ('e', 69), ('a', 66), ('c', 62), ('f', 60)]
    print(c)

    第二种方式,从小到大排序.总体思路:sorted函数可以对列表[]进行从小到大排序,对于字典{}dict,sorted函数只比较dict的key进行排序,所以要对dict进行调整变形。
        1、利用zip函数把dict转换成一个列表,列表中每个元素都是一个tuple,tuple大小比较原理是,先比较第一个元素,第一个相同在比较第二个。
        2、利用sorted函数对转换后的列表进行排序。
    z=zip(d.values(),d.keys()) #[(62, 'a'), (74, 'b'), (83, 'c'), (96, 'd'), (75, 'e'), (79, 'f'), (83, 'g')],然后对这个列表进行sorted排序
    sorted(z)

    第三种方式:[(a1,b1,c1),(a2,b2,c2),(a3,b3,c3),(a4,b4,c4)……] sorted函数可以对这种集合进行指定元素排序。
    sorted(d.items(),key=lambda x:x[1]),第一个从参数是需要排序的列表,第二个参数是指定key(列表中每一项的第几个元素)来进行排序。
    解释这句代码:d.items()返回的是一个列表 [('a', 74), ('b', 90), ('c', 84), ('d', 85), ('e', 64), ('f', 66), ('g', 88)]
    sorted会对d.items()这个list进行遍历,把list中的每一个元素,也就是每一个tuple()当做x传入匿名函数lambda x:x[1],函数返回值为x[1],
    也就是key=x[1]=tuple()[1]=
    ('a', 74)[1],也就是说按照里表中每个项的第二个元素进行排序(第一个是想x[0]).
     
    
    
  • 相关阅读:
    TF用法指导
    二叉搜索树
    霍夫曼树
    集成学习—boosting和bagging
    值得关注的博客或者文章
    ElasticSearch中的sort排序和filedData作用
    ElasticSearch--validate验证搜索语句是否合法或者存在语法错误
    elasticsearch中query和filter的区别
    深度认识 Sharding-JDBC:做最轻量级的数据库中间层
    elasticserach数据库深度分页查询的原理
  • 原文地址:https://www.cnblogs.com/daacheng/p/7906760.html
Copyright © 2011-2022 走看看