sort是应用在list上的排序,且是在原来list上进行排序
sorted是应用在可迭代对象上的排序,sorted则是返回的一个新的list

  1. def sorted(__iterable: Iterable[_T],
  2. *,
  3. key: Optional[(_T) -> Any] = ...,
  4. reverse: bool = ...) -> List[_T]

参数说明

iterable:任何可迭代对象,字典、列表、元组、字符串
key:指定可迭代对象中的某个参数进行排序,一般结合lambda使用python 匿名函数
reverse:reverse=True降序,reverse=False升序

应用题目

1.给定一个数组,要求统计数组中元素出现的次数并且按次数排序

  1. class sorted_out:
  2. def __init__(self, array_info):
  3. self.array_info = array_info
  4. def sort_1(self):
  5. sort_info = Counter(self.array_info)
  6. return sorted(sort_info.items(), key=lambda x: x[1], reverse=True)
  7. d = sorted_out(l1)
  8. print(dict(d.sort_1())) # {'c': 4, 'd': 3, 'a': 2, 'b': 1}

2.单条件排序

  1. # 根据age字段倒叙排序
  2. array = [{"age": 25, "name": "a"}, {"age": 25, "name": "b"}, {"age": 10, "name": "c"}]
  3. sort_info = sorted(array, key=lambda x: -x['age'])
  4. print(sort_info) # [{'age': 25, 'name': 'a'}, {'age': 25, 'name': 'b'}, {'age': 10, 'name': 'c'}]

3.多条件排序

  1. # 优先根据name字段倒叙排序,在根据age正序排序
  2. array = [{"age": 25, "name": "a"}, {"age": 25, "name": "b"}, {"age": 10, "name": "c"}]
  3. sort_info = sorted(array, key=lambda x: (x['name'], -x['age']), reverse=True)
  4. print(sort_info) # [{'age': 10, 'name': 'c'}, {'age': 25, 'name': 'b'}, {'age': 25, 'name': 'a'}]