0
点赞
收藏
分享

微信扫一扫

python - sort - 对象、数组、字典 lambda 排序方法


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    

举报

相关推荐

0 条评论