字典排序

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])
    
  • 输出
    [(101, 0), (100, 1), (102, 2)]
    
    理解了上面这个key的含义,lambda可以理解为一个函数,输出为x:x[1],即字典的第一个值,合起来就是以字典的第一个值作为key排序。

嵌套字典排序

  • 如果是嵌套字典,排序如下
    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 倒序

以上是关于字典排序的主要内容,如果未能解决你的问题,请参考以下文章

Python 按照 list 中的字典的某个 key 排序

什么是字典排序

python中列表排序,字典排序,列表中的字典排序

JAVA按着字典顺序排序

python怎么对字典进行排序

python 字典排序