方法一:使用包裹函数排序
from functools import cmp_to_key
students = [
{
"name":"张三",
"age":24,
"hoby":"girls"},
{
"name":"李四",
"age":20,
"hoby":"sports"
},
{
"name":"王五",
"age":24,
"hoby":"E-games"
}
]
def cmp(a,b):
if a['age']>b['age']:
return 1
elif a['age']<b['age']:
return -1
else:
if a['name']>b['name']:
return 1
else :return -1
students.sort(key=cmp_to_key(cmp))
print(students)
运行结果为:
方法二:使用operator排序
import operator
students = [
{
"name":"张三",
"age":24,
"hoby":"girls"},
{
"name":"李四",
"age":20,
"hoby":"sports"
},
{
"name":"王五",
"age":24,
"hoby":"E-games"
}
]
# 升序
s1 = sorted(students, key=operator.itemgetter('age'))
print('升序:%s'%s1)
# 降序
s2 = sorted(students, key=operator.itemgetter('age'), reverse=True)
print('降序:%s'%s2)
运行结果为:
方法三:使用lambda函数排序
students = [
{
"name":"张三",
"age":24,
"hoby":"girls"},
{
"name":"李四",
"age":20,
"hoby":"sports"
},
{
"name":"王五",
"age":24,
"hoby":"E-games"
}
]
# 按key升序
s1 = sorted(students, key=lambda list: list['age'], reverse=False)
print("按key升序后的数据:%s"%s1)
# 按key降序
s2= sorted(students, key=lambda list: list['age'], reverse=True)
print("按key升序后的数据:%s"%s2)
运行结果为: