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代表的是工资,等等... 所以不会拿自己的年龄和工资作一次排序。
参考技术A 要做的话,可以手动给它并成一个新列‘sort_key’。 obj就是你最外层的a,免得同名混淆 参考技术B 一: 字典排序# 要做的话,可以手动给它并成一个新列‘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']))
解析: 使用sorted 方法, 排序后的结果为一个元组. 可以字符串排序(那数字肯定更没问题了!)
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 倒序
以上是关于Python字典嵌套字典排序,该怎么处理?的主要内容,如果未能解决你的问题,请参考以下文章