Khi cần gán cho mỗi phần tử trong danh sách một giá trị tương ứng với thứ tự độ lớn (rank) của nó, ta kết hợp sử dụng tập hợp (set), hàm zip và list comprehension.
Ví dụ
Minh họa dưới đây:
my_list = [91, 42, 27, 39, 24, 45, 53]
print("Danh sách ban đầu:")
print(my_list)
my_ordered_dict = dict(zip(list(set(my_list)), range(len(set(my_list)))))
my_result = [my_ordered_dict[elem] for elem in my_list]
print("Kết quả:")
print(my_result)
Kết quả
Danh sách ban đầu: [91, 42, 27, 39, 24, 45, 53] Kết quả: [0, 2, 6, 1, 5, 3, 4]
Giải thích
- Định nghĩa danh sách và in ra màn hình.
- Lấy các phần tử duy nhất bằng
set, chuyển thành list, sau đó zip với range độ dài để tạo cặp (giá trị, thứ hạng). - Chuyển thành dictionary ánh xạ giá trị → thứ hạng.
- Dùng list comprehension tra cứu dictionary cho từng phần tử gốc.
- In kết quả.