zoukankan      html  css  js  c++  java
  • Python字典排序

    利用引出一个例子来理解

    例如:比如使用Python字典排序,d={'a':1,'c':3,'b':2}按值升序排列,我们可以用sorted高阶函数或者用列表的.sort()方法。下面具体阐述两种排序方法:

    一、sorted高阶函数

    d={'a':1,'c':3,'b':2}   # 首先建一个字典d
    d.items() #d.items()返回的是: dict_items([('a', 1), ('c', 3), ('b', 2)])
    d_result=sorted(d.items(),key=lambda x:x[1],reverse=False) # 按字典集合中,每一个元组的第二个元素排列。x相当于字典集合中遍历出来的一个元组。
    print(d_result) # 得到:  [('a', 1), ('b', 2), ('c', 3)]

    sorted排序方法:

    1. sorted高阶函数语法格式:  sorted(可迭代对象,key=函数名,reverse=False/True)

      作用:从可迭代对象中,依次取出一个元素,该元素再按照key规定的排列依据排序。

      可迭代对象:即可依次取值的对象,例如:集合,序列(列表,字符串,元组),字典等。

      key : 是列表排列的依据,一般可以自定义一个函数返回排序的依据,再把函数名绑定给key。

      reverse : 译为反转,reverse默认等于False,从小到大排序。等于True时,从大到小排序。

     2. 匿名函数lambda的格式:    函数名 = lambda  [形参1,形参2,...] :  ,返回操作语句块产生的结果并绑定给函数名。

      例如: key=lambda x : x[1]       

       # x:相当于字典集合中的一个元组, 例:dict_items([('a', 1), ('c', 3), ('b', 2)])中的('a', 1)或('c', 3)或('b', 2)

       # x[1]: 返回x中的第二个元素,即键值对元组中的值。dict_items([('a', 1), ('c', 3), ('b', 2)])中的1或2或3

    注意:

      1. sorted函数中的可迭代对象不要用字典d,那样只能迭代出的字典d的键。要用d.items()才可迭代出字典的键值对。

        例:不能用 d_result=sorted(d,key=lambda x:x[1],reverse=False),要用 d_result=sorted(d.items(),key=lambda x:x[1],reverse=False)

      2. sorted函数排好序后,要绑定一个对象(赋值)

     例:d_result=sorted(d.items(),key=lambda x:x[1],reverse=False),因为字典是无序类型,用sorted函数排好序后不绑定d_result,字典会自动打乱顺序。

    二、列表的.sort()方法 

    Python中的字典是无序类型,没有自己的排序方法。但可以用列表的.sort()方法来进行排序。

    首先要把字典转换为列表,再进行排序。

    d={'a':1,'c':3,'b':2}    # 首先建一个字典d
    d.items()        # 得到: dict_items([('a', 1), ('c', 3), ('b', 2)])
    L=list(d.items())       # 得到列表: L=[('a', 1), ('c', 3), ('b', 2)]
    L.sort(key=lambda x:x[1],reverse=False)  # 按列表中,每一个元组的第二个元素从小到大排序。x代表从L中遍历出的一个元组
    print(L)      # 得到:  [('a', 1), ('b', 2), ('c', 3)]

    注意:
     1.上面的例子中最要的一步就是:  L=list(d.items()),  即: L = list(dict_items([('a', 1), ('c', 3), ('b', 2)])

          用list()列表构造函数,将L= dict_items([('a', 1), ('c', 3), ('b', 2)]) 转变为列表,得到列表:  L=[('a', 1), ('c', 3), ('b', 2)] 。

          list()构造函数可以把 d.items()产生的dict_items键值对集合类型,直接变成列表。

     2.列表的L.sort()方法:  L.sort(key=函数名,reverse=False/True)

         L.sort():会自动遍历列表中的元素,即依次取出一个元素。再以key绑定的函数为依据排序。

         例如: L.sort(key=lambda x:x[1],reverse=False)       #L=[('a', 1), ('c', 3), ('b', 2)]

                     从列表L中取出第一个元素('a', 1)元组,以元组的第二个元素'1'为排序依据,再依次从列表中依次取出第二,第三,...个元素确定排序依据,最后reverse=False,按从小到大的顺序排列。

  • 相关阅读:
    Nginx 部署多个 web 项目(虚拟主机)
    Nginx 配置文件
    Linux 安装 nginx
    Linux 安装 tomcat
    Linux 安装 Mysql 5.7.23
    Linux 安装 jdk8
    Linux 安装 lrzsz,使用 rz、sz 上传下载文件
    springMVC 拦截器
    spring 事务
    基于Aspectj 注解实现 spring AOP
  • 原文地址:https://www.cnblogs.com/chen8023miss/p/11174166.html
Copyright © 2011-2022 走看看