python排序

列表排序

list.sort(self, /, *, key=None, reverse=False)

key:键函数

reverse:布尔值,设置排序方式

  • 默认为升级
  • 设置为 True 则为降序
a = [3, 1, 4, 1, 5, 9]

a.sort()
a
# [1, 1, 3, 4, 5, 9]

a.sort(reverse=True)
a
# [9, 5, 4, 3, 1, 1]


b = ['B10', 'C02', 'A05']

b.sort(reverse=True)
b
# ['C02', 'B10', 'A05']

b.sort(reverse=True, key=lambda x: int(x[1:]))
b
# ['B10', 'A05', 'C02']

字典排序

sorted(iterable, key=None,reverse=False)
  • iterable:可迭代对象,即可以用for循环进行迭代的对象;
  • key:主要是用来进行比较的元素,只有一个参数,具体的函数参数取自于可迭代对象中,用来指定可迭代对象中的一个元素来进行排序;
  • reverse:排序规则,reverse=False升序(默认),reverse=True降序。
# 字典排序
a = {'a': 3, 'c': 89, 'b': 0, 'd': 34}
# 按照字典的值进行排序
a1 = sorted(a.items(), key=lambda x: x[1])
# 按照字典的键进行排序
a2 = sorted(a.items(), key=lambda x: x[0])

包含字典dict的列表list排序

方法1:使用 operator进行排序

import operator

list1 = [{'name': 'Kevin', 'age': 27}, {'name': 'Ling', 'age': 23}]
# 升序
list2 = sorted(list1, key=operator.itemgetter('age'))
print("开始列表:{}".format(list1))
print("升序后列表:{}".format(list2))

# 降序
list2 = sorted(list1, key=operator.itemgetter('age'), reverse=True)
print("开始列表:{}".format(list1))
print("降序后列表:{}".format(list2))

方法2:使用 lambda 进行排序

list1 = [{'name': 'Kevin', 'age': 27}, {'name': 'Ling', 'age': 23}]
# 升序
list2 = sorted(list1, key=lambda list1: list1["age"])
print("开始列表:{}".format(list1))
print("升序后列表:{}".format(list2))

# 降序
list2 = sorted(list1, key=lambda list1: list1["age"], reverse=True)
print("开始列表:{}".format(list1))
print("降序后列表:{}".format(list2))

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×