排序

2022-11-17
  • 字符串排序
  • 列表排序
  • 字典排序

字典列表排序

列表嵌套字典

1
from operator import itemgetter
2
3
datas = [
4
{"id": 10, "score": "77"},
5
{"id": 24, "score": "99"},
6
{"id": 5, "score": "88"},
7
{"id": 12, "score": "88"}
8
]

单维度排序

1
# 方法一
2
sorted(datas, key=itemgetter("id"))
3
4
# 方法二
5
sorted(datas, key=lambda e:e.__getitem__("id"))
6
"""
7
返回
8
[
9
{'id': 5, 'score': '88'},
10
{'id': 10, 'score': '77'},
11
{'id': 12, 'score': '88'},
12
{'id': 24, 'score': '99'}
13
]
14
"""

多维度排序

1
# 方法一
2
sorted(datas, key=itemgetter("score", "id"))
3
4
# 方法二
5
sorted(
6
datas,
7
key=lambda e:(
8
e["id"],
9
e["score"]
10
)
11
)
12
sorted(
13
datas,
14
key=lambda e:(
15
e.__getitem__("id"),
16
e.__getitem__("score")
17
)
18
)

itemgetter 方法运行效率比 [[lambda]] 要快一些。除了排序之外,可同样适用于 min () 和 max() 等函数。

参考