python - sort - 对象、数组、字典 lambda 排序方法
一、lambda 表达式使用说明
lambda 表达式即匿名方法
如:
def add(x,y)
return x+y
fun = lambda x,y:x+y
其中 add() 方法和 fun 匿名方法,是等效的;
二、lambda 语法说明
lambda 形参列表:表达式(返回值)
如:lambda x,y:x+y
其中:
x,y 是方法的形参;
x+y 与方法中的 return x+y 等效;
三、代码实例
#!/usr/bin/env python3
# coding=utf-8
'''
排序
'''
class PersonInfo:
age=0
name=''
def getPersons():
arr = []
for i in range(20,100,10):
info = PersonInfo()
info.age = i
info.name = '张'+str(i)
arr.append(info)
return arr
def getDic():
dic = dict()
dic[1] = 'aa'
dic[2] = 'bb'
dic[3] = 'cc'
return dic
def test():
persons = getPersons()
#使用象数的 age 属性降序排序
lst = sorted(persons,key=lambda x:x.age,reverse=True)
print('-'*30)
for x in lst:
print(x.age,x.name)
#使用字典的键排序,注:方法 items() 返回的是元组类型的迭代对象,元组[0]是key,元组[1]是value;
dic = getDic()
lst = sorted(dic.items(),key=lambda x:x[0],reverse=True)
print('-'*30)
for x in lst:
print(x[0],x[1])
#数组排序
arr = [1,2,3,4,5,6,7]
arr.sort(reverse=True) #数组实例方法排序
print('-'*30)
for x in arr:
print(x)
lst = sorted(arr,key=lambda x:x,reverse=True) #lambda 排序
print('-'*30)
for x in lst:
print(x)
pass
if __name__ == '__main__':
test()
四、运行结果
------------------------------
90 张90
80 张80
70 张70
60 张60
50 张50
40 张40
30 张30
20 张20
------------------------------
3 cc
2 bb
1 aa
------------------------------
7
6
5
4
3
2
1
------------------------------
7
6
5
4
3
2
1