List chứa int, float, str, char hoặc bất kỳ class nào implement __lt__ (Python 3 dùng rich comparison) có thể sắp xếp bằng cách gọi sort() trên list. Muốn sắp xếp ngược (giảm dần), truyền reverse=True.
Ví dụ
my_list = [1, 5, 2, 6, 0] my_list.sort() print(my_list) # [0, 1, 2, 5, 6] my_list.sort(reverse=True) print(my_list) # [6, 5, 2, 1, 0]
Vì tuple immutable, không có in-place sort. Dùng sorted() trả về list đã sắp xếp. Nếu không muốn sửa list gốc, dùng sorted() thay vì list.sort().
Ví dụ
my_list = [1, 5, 2, 6, 0] print(sorted(my_list)) # [0, 1, 2, 5, 6] print(sorted(my_list, reverse=True)) # [6, 5, 2, 1, 0]
Nếu list chứa object không có __lt__, dùng tham số key chỉ định cách so sánh. Ví dụ sort list dict theo key 'size':
Ví dụ
def get_my_key(obj):
return obj['size']
my_list = [{'name': "foo", 'size': 5}, {'name': "bar", 'size': 3}, {'name': "baz", 'size': 7}]
my_list.sort(key=get_my_key)
print(my_list)
Kết quả
[{'name': 'bar', 'size': 3}, {'name': 'foo', 'size': 5}, {'name': 'baz', 'size': 7}]
Hàm key được gọi cho mỗi phần tử, sắp xếp dựa trên giá trị trả về. Có thể dùng lambda: my_list.sort(key=lambda x: x['size']). Từ Python 3.2+, functools.cmp_to_key chuyển comparator cũ sang key function.