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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • jQuery 如何得到 scrollHeight 的值

    jQuery 如何得到 scrollHeight 的值之前为了得到dom的scrollHeight的值,一直写法是这样的: [b]$(‘#box’)[0].scrollHeight[/b]今天我知道了另外一个方法: [b]$(‘#box’).prop(‘scrollHeight’)[/b]注意: [b]$(‘#box’).arrt(‘scrollHeight’);[/b]这个写法是undefined值[i

    2022年7月24日
    14
  • 二叉树性质总结

    二叉树性质总结性质1:二叉树第i(i>=1)层上的节点数最多为2^(i-1)证明:归纳基础:第一层有一个节点,第二层最多有两个节点,第三层最多有四个节点,以此类推,数学归纳法证明如下:i=1时,2^(i-1)=2^0=1,因为第一层上为根节点,所以命题成立。归纳假设:假设对所有的j(1归纳步骤:根据归纳假设,第i-1层上至多有2(i-2)个节点,由于二叉树每个节点至多有两个孩子节点,所以第i

    2022年5月6日
    45
  • Nginx配置使用详解

    Nginx配置使用详解详细讲解Nginx的配置文件以及使用

    2022年7月14日
    24
  • java打包jar和war的区别[通俗易懂]

    java打包jar和war的区别[通俗易懂]jar和war包,都是为了项目的部署和发布,把项目打包,同茶馆在部署打包的时候,在里面加上部署的信息(把代码和依赖压缩在成一个编译器可以直接使用的压缩文件,eg:tomcat先解压,编译,缺点是随着文件的增加,启动变慢)相同点:都是压缩文件,用解压文件可以解压不同点:war是javaweb打的包,jar是java打的包 jar只用于java来写的项目打包,里面只有编译后的class…

    2022年5月18日
    84
  • C语言:求最大公约数和最小公倍数「建议收藏」

    C语言:求最大公约数和最小公倍数「建议收藏」记录自己的c语言学习过程输入两个正整数,分别求出最大公约数和最小公倍数代码:#include<stdio.h>intmain(){ intm,n,a,b; printf("输入两个正整数:"); scanf("%d%d",&m,&n); if(m&am

    2022年5月17日
    45
  • main(argc,argv)中参数含义_c语言int char

    main(argc,argv)中参数含义_c语言int char这篇文章主要介绍了C语言中intmain(intargc,char*argv[])的两个参数详解的相关资料,需要的朋友可以参考下:转载自:https://www.jb51.net/article/107168.htm        https://www.cnblogs.com/ruixingw/p/3705918.htmlC语言中intmain(inta…

    2025年6月3日
    5

发表回复

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

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