zoukankan      html  css  js  c++  java
  • python 关于字典的排序

    转载自https://blog.csdn.net/ustbbsy/article/details/79637594

    平常学习了字典(dict),感觉还行。但一到用的时候,就感觉模棱两可。

    于是就总结了字典的常见用法,以后可熟记于心。

     - - - - - - - - - - - - - - - 

    更新日记:2019-05-21

    通一表述:字典有两个参数,key, value,下面所描述,键:key,值:value

    欢迎批评指正!

     - - - - - - - - - - - - - - - -        下面是正文  -- - - -- - - -- - -  - - - - - -- - 

    创建一个字典

    dict1={'a':2,'b':3,'c':8,'d':4}

    1、分别取键、值

    取字典的所有键,所有的值,利用dict1.keys(),dict1.vaules(),

    由于键,值有很多个,所以要加s,另外注意这里要加括号,这样的小细节不注意,很容易犯错。

    print(dict1.values(),dict1.keys())

    结果:

    dict_values([4, 2, 8, 3]) dict_keys(['d', 'a', 'c', 'b'])

    可以看出,返回的是列表的形式

    2、同时取键、值

    同时取字典的键、值,dict1.items(),这里同样加s和括号

    print(dict1.items())

    结果:

    dict_items([('d', 4), ('a', 2), ('c', 8), ('b', 3)])

    可以看出,返回的结果是元组组成的列表

    也就是说,通过dict1.items()这个函数,把字典形式的键、值,存在了一个元组内。

    3、排序

    3.1 sorted

    先看一下,直接用sorted()排序的情况。

    1.  
      dict1={'a':2,'e':3,'f':8,'d':4}
    2.  
      dict2 = sorted(dict1)
    3.  
      print(dict2)

    结果:

    ['a', 'd', 'e', 'f']

    sorted()默认是对字典的键,从小到大进行排序

    3.2 、对键反向排序

    对键进行反向(从大到小)排序

    1.  
      dict1={'a':2,'e':3,'f':8,'d':4}
    2.  
      dict2 = sorted(dict1,reverse=True)
    3.  
      print(dict2)
    4.  
      结果:['f', 'e', 'd', 'a']

    像这种对键进行排序,往往是为了得到 值(value)

    拿到键最大,对应的值,如:

    print(dict1[dict2[0]])#结果为8

    当然我们也可以先拿到所有的key,然后再对key排序

    1.  
      dict1={'a':2,'e':3,'f':8,'d':4}
    2.  
      list1= sorted(dict1.keys(),reverse=True)
    3.  
      print(list1) # 结果:['f', 'e', 'd', 'a']

    3.3、对值排序

    同样,用dict1.values()得到所有的values,然后对value排序

    1.  
      dict1={'a':2,'e':3,'f':8,'d':4}
    2.  
      list1= sorted(dict1.values())
    3.  
      print(list1)    #结果:[2, 3, 4, 8]

    设值reverse=True 进行反向排序

    也可以用dict1.items(),得到包含键,值的元组

    由于迭代对象是元组,返回值自然是元组组成的列表

    这里对排序的规则进行了定义,x指元组,x[1]是值,x[0]是键

    1.  
      dict1={'a':2,'e':3,'f':8,'d':4}
    2.  
      list1= sorted(dict1.items(),key=lambda x:x[1])
    3.  
      print(list1)

    结果:

    [('a', 2), ('e', 3), ('d', 4), ('f', 8)]

    对键进行排序:

    1.  
      dict1={'a':2,'e':3,'f':8,'d':4}
    2.  
      list1= sorted(dict1.items(),key=lambda x:x[0])
    3.  
      print(list1)

    结果:

    [('a', 2), ('d', 4), ('e', 3), ('f', 8)]

    4 itemgetter

    1.  
      from operator import itemgetter
    2.  
      d = {"a":8,"b":4,"c":12}
    3.  
      print(sorted(d.items(),key=itemgetter(0),reverse=True))
    4.  
      print(sorted(d.items(),key=itemgetter(1),reverse=True))

    结果:

    1.  
      [('c', 12), ('b', 4), ('a', 8)]
    2.  
      [('c', 12), ('a', 8), ('b', 4)]

    itemgetter(0),获取key

    itemgetter(1),获取value

  • 相关阅读:
    springboot文件上传: 单个文件上传 和 多个文件上传
    Eclipse:很不错的插件-devStyle,将你的eclipse变成idea风格
    springboot项目搭建:结构和入门程序
    POJ 3169 Layout 差分约束系统
    POJ 3723 Conscription 最小生成树
    POJ 3255 Roadblocks 次短路
    UVA 11367 Full Tank? 最短路
    UVA 10269 Adventure of Super Mario 最短路
    UVA 10603 Fill 最短路
    POJ 2431 Expedition 优先队列
  • 原文地址:https://www.cnblogs.com/tianleblog/p/11590211.html
Copyright © 2011-2022 走看看