利用引出一个例子来理解

例如:比如使用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,按从小到大的顺序排列。

Python字典排序的更多相关文章

  1. python 字典排序 关于sort()、reversed()、sorted()

    一.Python的排序 1.reversed() 这个很好理解,reversed英文意思就是:adj. 颠倒的:相反的:(判决等)撤销的 print list(reversed(['dream','a ...

  2. <转>python字典排序 关于sort()、reversed()、sorted()

    一.Python的排序 1.reversed() 这个很好理解,reversed英文意思就是:adj. 颠倒的:相反的:(判决等)撤销的 print list(reversed(['dream','a ...

  3. python 字典排序,列表排序详细

    在程序中使用字典进行数据信息统计时,由于字典是无序的所以打印字典时内容也是无序的.因此,为了使统计得到的结果更方便查看需要进行排序.Python中字典的排序分为按“键”排序和按“值”排序. 1.按“值 ...

  4. (转)Python 字典排序

    我们知道Python的内置dictionary数据类型是无序的,通过key来获取对应的value.可是有时我们需要对dictionary中 的item进行排序输出,可能根据key,也可能根据value ...

  5. Python 字典排序

    思路是把字典转为列表后再排序 d={'z':1,'y':2,'x':3} # 字典 s=d.items() # [('y', 2), ('x', 3), ('z', 1)] 列表 s.sort() # ...

  6. python字典排序取最值总结

    dic = {"abc":18,"adc":19,"abe":20} # 默认对键排序,从小到大,返回排序后键组成的列表 zidian = ...

  7. !!Python字典增删操作技巧简述+Python字典嵌套字典与排序

    http://developer.51cto.com/art/201003/186006.htm Python编程语言是一款比较容易学习的计算机通用型语言.对于初学者来说,首先需要掌握的就是其中的一些 ...

  8. python字典(dictionary)使用:基本函数code实例,字典的合并、排序、copy,函数中*args 和**kwargs做形参和实参

    python字典dictionary几个不常用函数例子 一.字典声明 如,d={}; d= {'x':1,'b':2} d1 = dict(x=1,y=2,z=3)     d2 = dict(a=3 ...

  9. Python字典按值排序的方法

    Python字典按值排序的方法: 法1: (默认升序排序,加  reverse = True 指定为降序排序) # sorted的结果是一个list dic1SortList = sorted( di ...

随机推荐

  1. 向HashMap中添加1000个元素,设置new HashMap()值为多少合适?

    在已知元素容量的情况下,为了尽量减少碰撞增加查询效率,应该尽量选择较大数的同时避免资源浪费. HashMap底层通过hash值来计算索引位置的源码: 1.重新计算hash值 static final ...

  2. Hadoop 学习之路(一)—— 分布式文件系统 HDFS

    一.介绍 HDFS (Hadoop Distributed File System)是Hadoop下的分布式文件系统,具有高容错.高吞吐量等特性,可以部署在低成本的硬件上. 二.HDFS 设计原理 2 ...

  3. 【简易bat脚本】启动java程序

    前置条件:path中添加了JAVAHOME配置了java环境变量 1.新建txt文本文件 2.粘贴以下内容 @echo off set path=%path%;.;java -classpath &q ...

  4. Rstudio调用plot()函数时,出现错误的处理方法

    按照书上的例子敲出代码后,发现Rstudio无法识别C盘user文件夹下的中文用户名.如下图所示: 按照网上的做法,尝试修改计算机user下的用户名,没修改成功. 另一种做法是在plot()函数前面加 ...

  5. CentOS 6.x 安装 JDK1.8

    安装方式:rpm(此方式不需要手动配置环境变量) 1. 查看系统是否自带了jdk 查看centos是否自带了openjdk,如果有则卸载掉(当然也可以不卸载,但要注意冲突及版本的使用) # 查看 rp ...

  6. Python编程菜鸟成长记--A1--04--Hello World!

    1.重点知识 掌握使用 命令行.文件.Jupyter 的方式执行 Python 代码 2.Hello World! 自从 C 语言之父 丹尼斯.M.里奇 在<The C Programming ...

  7. 使用SSH+SFTP操作终端全解析,告别XShell

    1.前言 在Windows系统下操作远程服务器的方式很多,比如XShell+XFTP组合,亦或是PuTTY+WinSCP组合,但在Mac系统下登陆远程服务器,并没有这些工具供我们使用.相比较而言,在M ...

  8. Codeforces 758C:Unfair Poll(思维+模拟)

    http://codeforces.com/problemset/problem/758/C 题意:教室里有n列m排,老师上课点名从第一列第一排开始往后点,直到点到第一列第m排,就从第二列第一排开始点 ...

  9. 2015-2016 ACM-ICPC, NEERC, Northern Subregional Contest D:Distribution in Metagonia(构造)

    http://codeforces.com/gym/100801/attachments 题意:给出一个数n(1 <= n <= 1e18),将 n 拆成 m 个整数,其中 m 必须是 2 ...

  10. django基础知识之模板:

    模板介绍 作为Web框架,Django提供了模板,可以很便利的动态生成HTML 模版系统致力于表达外观,而不是程序逻辑 模板的设计实现了业务逻辑(view)与显示内容(template)的分离,一个视 ...