Python字典嵌套字典排序,该怎么处理?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python字典嵌套字典排序,该怎么处理?相关的知识,希望对你有一定的参考价值。

比如字典a = 'a':'aaa':3, 'b':'bbb':4, 'c':'ccc':1, 'd':'ddd':2,嵌套的字典键值不一样怎么用sorted(a.items(),key=lambda x:x[1][''])处理

感觉这个需求有些许问题,因为通常对比排序的都是同一类型的数据,譬如aaa代表是年龄,bbb代表的是工资,等等... 所以不会拿自己的年龄和工资作一次排序。

#  要做的话,可以手动给它并成一个新列‘sort_key’。 obj就是你最外层的a,免得同名混淆

for i in obj:

obj[i]['sort_key'] = obj[i].values()[0] 

#  目的是构造出这样的结构: 

#  ('c', 'sort_key': 1, 'ccc': 1), ('d', 'sort_key': 2, 'ddd': 2), .....)

print(sorted(obj.items(), key = lambda x:x[1]['sort_key']))

参考技术A 要做的话,可以手动给它并成一个新列‘sort_key’。 obj就是你最外层的a,免得同名混淆 参考技术B 一: 字典排序
解析: 使用sorted 方法, 排序后的结果为一个元组. 可以字符串排序(那数字肯定更没问题了!)

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字典嵌套字典排序,该怎么处理?的主要内容,如果未能解决你的问题,请参考以下文章

Python字典字典列表嵌套字典排序

python 字典排序

python-12-字典的嵌套与int快速排序

Python 字典 列表 嵌套 复杂排序大全

学不会的python之通过某几个关键字排序分组一个字典列表(列表中嵌套字典)

学不会的python之通过某几个关键字排序分组一个字典列表(列表中嵌套字典)