简介:列表的sort()方法和内置函数sorted()均支持可以参数实现复杂排序要求。
条件格式:sort(key=ambda x:(x[0],-x[1],……,+x[n]))
参数说明:默认:+升序,可不填,-负号代表降序。
案例解析:
1、第一条件升序,在第一条件均相同下按第二条件升序。
2、第一条件升序,在第一条件均相同下按第二条件降序。
3、多条件组合升序或者降序。条件格式:lambda x:(x[0],x[1],……,x[n])
4、处理字典类型key-value双条件升序、降序。
5、字典key-value:key升序
6、字典key-value:value升序
案例源码:
# -*- coding: utf-8 -*-
# time: 2022/5/21 11:28
# file: multi_sort.py
# 公众号: 玩转测试开发
# 1、第一条件升序,在第一条件均相同下按第二条件升序。
lst1 = [(3, 3), (3, 2), (1, 1), (1, 2), (2, 1)]
lst1.sort(key=lambda x: (x[0], x[1]))
print(lst1) # [(1, 1), (1, 2), (2, 1), (3, 2), (3, 3)]
# 2、第一条件升序,在第一条件均相同下按第二条件降序。
lst2 = [(3, 3), (3, 2), (1, 1), (1, 2), (2, 1)]
lst2.sort(key=lambda x: (x[0], -x[1]))
print(lst2) # [(1, 2), (1, 1), (2, 1), (3, 3), (3, 2)]
# 3、多条件组合升序或者降序。
lst3 = [(3, 3, 1), (3, 3, 2), (3, 3, 3), (1, 1, 1), (1, 1, 2), (1, 2, 3), (1, 3, 2)]
lst3.sort(key=lambda x: (x[0], x[1], x[2]))
print(lst3) # [(1, 1, 1), (1, 1, 2), (1, 2, 3), (1, 3, 2), (3, 3, 1), (3, 3, 2), (3, 3, 3)]
# 4、处理列表嵌套字典,key-value双条件升序、降序。
person1 = [
{'name': 'Tom', 'age': 28, 'weight': 50.23},
{'name': 'Cat', 'age': 30, 'weight': 56.45},
{'name': 'Cat', 'age': 30, 'weight': 45.04},
{'name': 'Tom', 'age': 28, 'weight': 60.88}
]
# name升序 > age升序 > weight升序
person1.sort(key=lambda person: (person['name'], person['age'], person['weight']))
print(person1)
# [{'name': 'Cat', 'age': 30, 'weight': 45.04}, {'name': 'Cat', 'age': 30, 'weight': 56.45},
# {'name': 'Tom', 'age': 28, 'weight': 50.23}, {'name': 'Tom', 'age': 28, 'weight': 60.88}]
person2 = [
{'name': 'Tom', 'age': 28, 'weight': 50.23},
{'name': 'Cat', 'age': 32, 'weight': 56.45},
{'name': 'Cat', 'age': 30, 'weight': 45.04},
{'name': 'Tom', 'age': 26, 'weight': 60.88}
]
person2.sort(key=lambda person: (person['name'], -person['age'], person['weight']))
print(person2) # name升序 > age降序 > weight升序
# [{'name': 'Cat', 'age': 32, 'weight': 56.45}, {'name': 'Cat', 'age': 30, 'weight': 45.04},
# {'name': 'Tom', 'age': 28, 'weight': 50.23}, {'name': 'Tom', 'age': 26, 'weight': 60.88}]
# 5、字典key-value:key升序
dic5 = {'a': 15, 'e': 13, 'd': 45, 'b': 10}
dic5 = sorted(dic5.items(), key=lambda dic: dic[0])
print(dic5)
# 6、字典key-value:value升序
dic6 = {'a': 15, 'e': 13, 'd': 45, 'b': 10}
dic6 = sorted(dic6.items(), key=lambda dic: dic[1])
print(dic6)
微信公众号:玩转测试开发
欢迎关注,共同进步,谢谢!