sort是应用在list上的排序,且是在原来list上进行排序
sorted是应用在可迭代对象上的排序,sorted则是返回的一个新的list
def sorted(__iterable: Iterable[_T],
*,
key: Optional[(_T) -> Any] = ...,
reverse: bool = ...) -> List[_T]
参数说明
iterable:任何可迭代对象,字典、列表、元组、字符串
key:指定可迭代对象中的某个参数进行排序,一般结合lambda使用python 匿名函数
reverse:reverse=True降序,reverse=False升序
应用题目
1.给定一个数组,要求统计数组中元素出现的次数并且按次数排序
class sorted_out:
def __init__(self, array_info):
self.array_info = array_info
def sort_1(self):
sort_info = Counter(self.array_info)
return sorted(sort_info.items(), key=lambda x: x[1], reverse=True)
d = sorted_out(l1)
print(dict(d.sort_1())) # {'c': 4, 'd': 3, 'a': 2, 'b': 1}
2.单条件排序
# 根据age字段倒叙排序
array = [{"age": 25, "name": "a"}, {"age": 25, "name": "b"}, {"age": 10, "name": "c"}]
sort_info = sorted(array, key=lambda x: -x['age'])
print(sort_info) # [{'age': 25, 'name': 'a'}, {'age': 25, 'name': 'b'}, {'age': 10, 'name': 'c'}]
3.多条件排序
# 优先根据name字段倒叙排序,在根据age正序排序
array = [{"age": 25, "name": "a"}, {"age": 25, "name": "b"}, {"age": 10, "name": "c"}]
sort_info = sorted(array, key=lambda x: (x['name'], -x['age']), reverse=True)
print(sort_info) # [{'age': 10, 'name': 'c'}, {'age': 25, 'name': 'b'}, {'age': 25, 'name': 'a'}]