python字典排序方法「建议收藏」

python字典排序方法「建议收藏」字典是“键-值对”的无序可变序列在实际运用中,对字典进行排序是一个比较常见的操作,主要用到了python内置函数sorted(),该函数可以对所有可迭代的对象进行排序操作。语法(python3):sorted(iterable,key=None,reverse=False)参数说明:iterable:可迭代对象,即可以用for循环进行迭代的对象;key:主要是用来进行比较的元素,只有一个参数,具体的函数参数取自于可迭代对象中,用来指定可迭代对象中的一个元素来进行排序;reverse:排序规

大家好,又见面了,我是你们的朋友全栈君。

字典是“键-值对”的无序可变序列
在实际运用中,对字典进行排序是一个比较常见的操作,主要用到了python内置函数sorted(),该函数可以对所有可迭代的对象进行排序操作。
语法(python3):

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

参数说明:
iterable:可迭代对象,即可以用for循环进行迭代的对象;
key:主要是用来进行比较的元素,只有一个参数,具体的函数参数取自于可迭代对象中,用来指定可迭代对象中的一个元素来进行排序;
reverse:排序规则,reverse=False升序(默认),reverse=True降序。

以下总结了sorted()函数针对字典排序的用法。
第一种:最常见的单个字典格式数据排序

# 字典排序
a = { 
   'a': 3, 'c': 89, 'b': 0, 'd': 34}
# 按照字典的值进行排序
a1 = sorted(a.items(), key=lambda x: x[1])
# 按照字典的键进行排序
a2 = sorted(a.items(), key=lambda x: x[0])
print('按值排序后结果', a1)
print('按键排序后结果', a2)
print('结果转为字典格式', dict(a1))
print('结果转为字典格式', dict(a2))

在这里插入图片描述
原理:以a.items()返回的列表[(‘a’, 3), (‘c’, 89), (‘b’,0), (‘d’, 34)]中的每一个元素,作为匿名函数(lambda)的参数,x[0]即用“键”排序,x[1]即用“值”排序;返回结果为新的列表,可以通过dict()函数转为字典格式。

第二种:字典列表排序

b = [{ 
   'name': 'lee', 'age': 23}, { 
   'name': 'lam', 'age': 12}, { 
   'name': 'lam', 'age': 18}]
b1 = sorted(b, key=lambda x: x['name'])
b2 = sorted(b, key=lambda x: x['age'],  reverse=True)
b3 = sorted(b, key=lambda x: (x['name'], -x['age']))
print('按name排序结果:', b1)
print('按age排序结果:', b2)
print('name相同按age降序排列:', b3)

在这里插入图片描述
原理:以列表b里面的每一个字典元素作为匿名函数的参数,然后根据需要用键取字典里面的元素作为排序的条件,如x[‘name’]即用name键对应的值来排序。

-end-

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/150247.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • Java实现2048小游戏(直接拿走运行)

    Java实现2048小游戏(直接拿走运行)运行效果:1.项目结构2.代码BaseData接口packagecom.hsy.game;importjava.awt.*;publicinterfaceBaseData{FonttopicFont=newFont(“微软雅黑”,Font.BOLD,50);FontscoreFont=newFont(“微软雅黑”,Font.BOLD,28);FontnormalFont=newFont(“宋体”,Font.PLAI

    2022年7月15日
  • SQL之视图与索引[通俗易懂]

    SQL之视图与索引[通俗易懂]SQL之视图与索引视图的定义、修改、使用索引的创建、查看视图人们在使用数据库时,并不是直接对数据源表进行操作,通常人们只关心源表的部分数据,因此为了使得用户在查询时方便,用不着在每次查询时都编写复杂的代码(比如连接等),可以事先将用户要使用的查询结果通过视图定义在数据库中,这样人们在进行查询时只需查看视图即可,简化了用户的操作,同时使得数据同源数据分离,提高了安全性。1.视图的创建语法:

    2022年7月22日
  • 启动马达接线实物图_电机的星三角降压启动实物接线图怎么画?

    启动马达接线实物图_电机的星三角降压启动实物接线图怎么画?展开全部电机的星三角降压启动实物接线图如下:基本原理就32313133353236313431303231363533e4b893e5b19e31333365666265是:启动时先用Y型接法电路,使得电机加载电压为220V,这样减少系统负荷防止过载;电机启动后,改成三角型接法电路,使得电压为380V,进行正常运转。这样的起动电流只有全压起动时的1/3,有效保护电机以及电路系统,防止电流过载…

    2022年5月3日
  • java集合系列——List集合之ArrayList介绍(二)

    List是 java.util包下面的类,从 java集合系列——java集合概述(一) 中可以知道,List继承了Collection 接口! List本身也是一个接口,它的实现有ArrayList 、LinkedList、Vector和CopyOnWriteArrayList等!

    2022年2月26日
  • Mysql表分区(diskgenius分区教程)

    Mysql表分区(diskgenius分区教程)一、MySQL分区表介绍分区是一种表的设计模式,正确的分区可以极大地提升数据库的查询效率,完成更高质量的SQL编程。但是如果错误地使用分区,那么分区可能带来毁灭性的的结果。分区功能并不是在存储引擎层完成的,因此不只有InnoDB存储引擎支持分区,常见的存储引擎MyISAM、NDB等都支持分区。但是并不是所有的存储引擎都支持,如CSV、FEDORATED、MERGE等就不支持分区。在

    2022年4月18日
  • excel转json的全套解决方案

    excel转json的全套解决方案首先准备图个excel:excel转json,使用的在线的一个工具:https://www.bejson.com/json/col2json/将上面代码先格式化,格式化网站如下:http://tool.oschina.net/codeformat/json然后将格式化的文本,复制粘贴到txt文本中将tx…

    2022年5月3日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号