zoukankan      html  css  js  c++  java
  • Python [习题] 字典排序

    [习题] 对此字典分别按照value 和key 如何排序?

    dic1 = {'and':40, 'a':54, 'is':60, 'path':139, 'the':124, 'os':49}

    In [38]: dic1 = {'and':40, 'a':54, 'is':60, 'path':139, 'the':124, 'os':49}
        ...: print(sorted(zip(dic1.values(),dic1.keys())))                       #按value的值升序
        ...: print(sorted(zip(dic1.values(),dic1.keys()),reverse=True))          #按value的值降序
        ...:
        ...: print(sorted(zip(dic1.keys(),dic1.values())))                       #按key的ascii码升序
        ...: print(sorted(zip(dic1.keys(),dic1.values()),reverse=True))          #按key的ascii码降序
        ...:
        ...: print(sorted(dic1.items(),key=lambda x:x[1],))                      #按value的值升序
        ...: print(sorted(dic1.items(),key=lambda x:x[1],reverse=True))          #按value的值降序
        ...:
        ...: print(sorted(dic1.items(),key=lambda x:x[0],))                      #按key的ascii码升序
        ...: print(sorted(dic1.items(),key=lambda x:x[0],reverse=True))          #按key的ascii码降序
        ...:
    [(40, 'and'), (49, 'os'), (54, 'a'), (60, 'is'), (124, 'the'), (139, 'path')]
    [(139, 'path'), (124, 'the'), (60, 'is'), (54, 'a'), (49, 'os'), (40, 'and')]
    
    [('a', 54), ('and', 40), ('is', 60), ('os', 49), ('path', 139), ('the', 124)]
    [('the', 124), ('path', 139), ('os', 49), ('is', 60), ('and', 40), ('a', 54)]
    
    [('and', 40), ('os', 49), ('a', 54), ('is', 60), ('the', 124), ('path', 139)]
    [('path', 139), ('the', 124), ('is', 60), ('a', 54), ('os', 49), ('and', 40)]
    
    [('a', 54), ('and', 40), ('is', 60), ('os', 49), ('path', 139), ('the', 124)]
    [('the', 124), ('path', 139), ('os', 49), ('is', 60), ('and', 40), ('a', 54)]
    

      

    知识点: zip(),sorted(),lambda

    zip: 

    zip函数接受任意多个(包括0个和1个)序列作为参数,返回一个tuple列表。

    用法: zip(iter1 [,iter2 [...]]) --> zip object:

    In [79]: a = 'abcdefg'
    
    In [80]: b = '1234567890'
    
    In [81]: zip(a,b)
    Out[81]: <zip at 0x1ce2b8d4fc8>
    
    In [82]: c = zip(a,b)
    
    In [83]: for i in c:
        ...:     print(i)
        ...:
    ('a', '1')
    ('b', '2')
    ('c', '3')
    ('d', '4')
    ('e', '5')
    ('f', '6')
    ('g', '7')

    sorted:

    对指定可迭代对象iterable 排序并返回一个新对象,不改变原数据;key 可以设置为按str、int或者指定值(如字典的value)排序,默认是None,将按照默认对象类型排序,如果对象是str,则按ascii 码排序,如果是对象是int 数字,则按数字排序;reverse 默认升序(False),True 为降序。

    sorted(iterable, key=None, reverse=False)

    lambda:

    最后两处lambda 比较绕,可以在( http://pythontutor.com/visualize.html#mode=display )这个网站边调试边分析x 和x[1] 的值是什么。

    以下截图中,lambda表达式中x的值是一个tuple("and",40),x[1] 就表示第1个元素(40),最终sorted 就是按字典的value 来进行排序。

  • 相关阅读:
    lamada基本语法
    idea 的全局搜索始终是上次的文本
    虚拟机中en33没有IP解决方法
    IDEA设置
    mysql主从配置
    linux安装mysql5.7(rpm方式)
    Jenkins+maven+github自动部署项目
    linux安装Jenkins
    linux wget安装jdk
    关于spring框架JdbcTemplate中的命令模式
  • 原文地址:https://www.cnblogs.com/i-honey/p/7735636.html
Copyright © 2011-2022 走看看