美文网首页
如何根据字典中值的大小对于字典中的项排序

如何根据字典中值的大小对于字典中的项排序

作者: 以七v为书 | 来源:发表于2018-12-18 14:55 被阅读0次

    问题
    某班英语成绩以字典形式存储为{'abbo',100,'faa':'100','aimi':59}
    根据成绩高低计算学生排名

    解决方案:

      1. 利用zip将字典数据转换为元组
      1. 传递sorted函数的key参数

    按值对字典排序

    普通做法:

    from random import randint
    dic = {x:randint(60,100) for x in 'zxcvbnm'}
    
    print(dic)
    skey = sorted(dic)
    print skey
    
    print iter(dic)
    print list(iter(dic))
    
    # 将字典进行转换变成sorted可以排序的
    
    print (97,'a') > (69,'b')
    print (97,'a') > (97,'b')
    
    print dic.keys()
    print dic.values()
    print zip(dic.keys(),dic.values())
    
    #进行优化内存使用可迭代对象
    print zip(dic.itervalues(),dic.iterkeys())
    
    print sorted(zip(dic.itervalues(),dic.iterkeys()))
    

    利用sorted的key传值

    sorted 传入三个参数:
    1:一个可迭代的对象
    2:key值:这里传入一个lambda匿名函数。取出每个迭代项的values
    3:reverse:正序还是倒序:默认为False从小到大

    print dic.items()
    
    # 从小到大排列
    print sorted(dic.items(), key=lambda x:x[1])
    # 从大到小排列
    print sorted(dic.items(), key=lambda x:x[1],reverse =True)
    
    ##优化内存版本
    
    # 从小到大排列
    print sorted(dic.iteritems(), key=lambda x:x[1])
    # 从大到小排列
    print sorted(dic.iteritems(), key=lambda x:x[1],reverse =True)
    

    相关文章

      网友评论

          本文标题:如何根据字典中值的大小对于字典中的项排序

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