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

Sắp xếp tuple theo key bất kỳ trong Python

Cho list các tuple, sắp xếp tăng dần theo phần tử tại index n (key). Sử dụng sorted() với key function.

Ví dụ: Sắp xếp theo index 0

tuples = [(2, 2), (1, 2), (3, 1)]
key_index = 0

def kth_item(t):
    return t[key_index]

result = sorted(tuples, key=kth_item)
print(result)  # [(1, 2), (2, 2), (3, 1)]

Cách ngắn gọn: Lambda

result = sorted(tuples, key=lambda t: t[key_index])

Xử lý lỗi IndexError

Nếu key_index >= len(tuple) → IndexError.

tuples = [(2, 2), (1, 2), (3, 1)]
key_index = 2  # tuple chỉ có index 0,1

try:
    result = sorted(tuples, key=lambda t: t[key_index])
except IndexError as e:
    print(f"Lỗi: {e}. Key index phải < {len(tuples[0])}")

Sắp xếp theo nhiều key (tie-break)

# Sắp xếp theo index 1, nếu bằng thì index 0
data = [(3, 2), (1, 2), (2, 1), (2, 2)]
result = sorted(data, key=lambda t: (t[1], t[0]))
print(result)  # [(2, 1), (1, 2), (2, 2), (3, 2)]

Sắp xếp giảm dần

result = sorted(tuples, key=lambda t: t[key_index], reverse=True)

Kết luận

sorted(list, key=lambda x: x[n]) là cách chuẩn để sort tuple/list theo index n. Lambda gọn nhẹ. Kiểm tra index hợp lệ trước khi sort. Dùng tuple key cho multi-level sorting.