字典排序
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了字典排序相关的知识,希望对你有一定的参考价值。
参考技术A 字典排序算法四步法:字典排序:
第一步:从右至左找第一个左邻小于右邻的数,记下位置i,值list[a]
第二部:从右边往左找第一个右边大于list[a]的第一个值,记下位置j,值list[b]
第三步:交换list[a]和list[b]的值
第四步:将i以后的元素重新按从小到大的顺序排列
举例:125643的下一个字典序列
第一步:右边值大于左边的3<4, 4<6, 6>5, 则i=2,list[a]=5
第二步:从右往左找出第一个右边大于list[a]=5的值,找到6>5,j=3;list[b]=6;
第三步:交换list[a]和list[b]的值,序列125643->126543
第四步:将位置2以后的元素重新排序,126543->126345;
结束: 126345即125643的下一个序列
Python字典字典列表嵌套字典排序
正常字典排序
- 正常的字典,其排序如下:
a=100:1,101:0,102:2 b=sorted(a.items(),key=lambda x:x[1])
- 输出
理解了上面这个key的含义,lambda可以理解为一个函数,输出为x:x[1],即字典的第一个值,合起来就是以字典的第一个值作为key排序。[(101, 0), (100, 1), (102, 2)]
嵌套字典排序
- 如果是嵌套字典,排序如下
a=100:'x':1,'y':2,101:'x':2,'y':0,102:'x':0,'y':3 b=sorted(a.items(),key=lambda x:x[1]['x'])
- 输出
[(102, 'x': 0, 'y': 3), (100, 'x': 1, 'y': 2), (101, 'x': 2, 'y': 0)]
- 如果想要设置主序和次序,可以如下:
key=lambda item: (-item[1][3], item[1][1], -item[1][2]))
字典列表排序
- 字典列表,排序如下:
a = ['x': 0, 'y': 3, 'x': 1, 'y': 2,'x': 2, 'y': 0] a.sort(key=lambda i: i["x"],reverse=True)
- reverse=True 倒序
以上是关于字典排序的主要内容,如果未能解决你的问题,请参考以下文章