编程语言
首页 > 编程语言> > python-字典列表嵌套的排序

python-字典列表嵌套的排序

作者:互联网

排序函数

使用排序有两个可用方法,分别是sort()和sorted()

  sort():内置方法,会改变原来列表的的排序、只适用于列表排序、所以效率高

  sorted():全局,可迭代任意对象(字符串、元祖、列表、字典等)

sort()示例

简单的列表排序

L = [4,5,2,6,7,0,1,8]
L.sort()
print(L)

运行结果:
[0, 1, 2, 4, 5, 6, 7, 8]

列表嵌套列表排序

user = [['Jone','183','22'],['Lily','165','60'],['Jack','179','59']]
user.sort(key=lambda user:user[2])
print(user)

运行结果:
[['Jone', '183', '22'], ['Jack', '179', '59'], ['Lily', '165', '60']]

sorted()示例

字符串

A = 'Python'
print(sorted(A,reverse=False))
print(sorted(A,reverse=True))

运行结果:
['P', 'h', 'n', 'o', 't', 'y']
['y', 't', 'o', 'n', 'h', 'P']

元祖

B = (5,6,2,3,1,9,7)
print(sorted(B,reverse=False))
print(sorted(B,reverse=True))

运行结果:
[1, 2, 3, 5, 6, 7, 9]
[9, 7, 6, 5, 3, 2, 1]

列表

C = [4,2,5,9,6,0]
print(sorted(C,reverse=False))
print(sorted(C,reverse=True))

运行结果:
[0, 2, 4, 5, 6, 9]
[9, 6, 5, 4, 2, 0]

字典
按key降序排

D = {"a":"2","b":"8","c":"6"}
D_K = sorted(D.items(),key=lambda x:x[0],reverse=True)
print(D_K)

运行结果:
[('c', '6'), ('b', '8'), ('a', '2')]

按value降序排

D = {"a":"2","b":"8","c":"6"}
D_K = sorted(D.items(),key=lambda x:x[1],reverse=True)
print(D_K)

运行结果:
[('b', '8'), ('c', '6'), ('a', '2')]

几种常见的嵌套排序

1.列表中嵌套字典,根据字典value值倒序排
  1.1 使用lambda方式,sorted排序函数中传入参数key,key的值为匿名函数lambda的返回值,匿名函数中的第一个x为参数,x[1]为函数表达式,1指的是取a的子元素的第二个值。

D = [{"name":"Jack","age":18},{"name":"Lily","age":28}]
ds = sorted(D,key=lambda x:x['age'],reverse=True)
print(ds)

运行结果:
[{'name': 'Lily', 'age': 28}, {'name': 'Jack', 'age': 18}]

  1.2 使用operator方式

import operator
D = [{"name":"Jack","age":18},{"name":"Lily","age":28}]
D.sort(key=operator.itemgetter('age'),reverse=True)
print(D)

运行结果:
[{'name': 'Lily', 'age': 28}, {'name': 'Jack', 'age': 18}]

2. 列表中嵌套字典,key不同的情况下对value进行排序
  可以将列表中的字典先放入到有一个字典中,对整个字典进行排序,在排序完成后,再转换成

from operator import itemgetter
dic_list = [{"min":89},{"fei":90},{"hao":84},{"jhon":98}]
dic_dict = {key:value for x in dic_list for key,value in x.items()}
print(dic_dict)
dict_list = sorted(dic_dict.items(),key=itemgetter(1))
print(dict_list)
dic_fin = [{x[0]:x[1] for x in dict_list}]
print(dic_fin)

运行结果:
{'min': 89, 'fei': 90, 'hao': 84, 'jhon': 98}
[('hao', 84), ('min', 89), ('fei', 90), ('jhon', 98)]
[{'hao': 84, 'min': 89, 'fei': 90, 'jhon': 98}]

3. 字典嵌套字典的排序

D = {10:{"aa":1,"bb":2},11:{"aa":2,"bb":0},12:{"aa":0,"bb":3}}
ds = sorted(D.items(),key=lambda x:x[1]['bb'])
print(ds)

运行结果:
[(11, {'aa': 2, 'bb': 0}), (10, {'aa': 1, 'bb': 2}), (12, {'aa': 0, 'bb': 3})]

 

 

 



 

标签:reverse,python,age,嵌套,key,print,sorted,排序,字典
来源: https://www.cnblogs.com/yttbk/p/16165472.html