Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Cách sắp xếp đối tượng trong list Python?


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.