Dictionary là cấu trúc dữ liệu bao gồm các cặp key (khóa) và value (giá trị). Chúng ta có thể sắp xếp dictionary theo hai tiêu chí:
Sắp xếp theo key – Dictionary được sắp xếp theo thứ tự tăng dần của các khóa. Giá trị không được quan tâm.
Sắp xếp theo value – Dictionary được sắp xếp theo thứ tự tăng dần của các giá trị.
Phương pháp 1 – Sắp xếp dictionary theo key
Trong cách này, dictionary được sắp xếp theo thứ tự tăng dần của khóa.
Đầu vào:
{2:90, 1: 100, 8: 3, 5: 67, 3: 5}Đầu ra:
{1:100, 2:90, 3:5, 5:67, 8:3}Như thấy, dictionary được sắp xếp theo khóa.
Ví dụ
dic = {2:90, 1: 100, 8: 3, 5: 67, 3: 5}
dic2 = {}
for i in sorted(dic):
dic2[i] = dic[i]
print(dic2)Kết quả
{1: 100, 2: 90, 3: 5, 5: 67, 8: 3}Giải thích từng dòng mã
- Khai báo dictionary cần sắp xếp.
- Khai báo dictionary rỗng để chứa cặp key-value đã sắp xếp.
sorted(dic)chứa tất cả khóa của dic theo thứ tự sắp xếp. Nó chỉ có khóa, không có cặp key-value.sorted(dic)sẽ là[1,2,3,5,8].- Với mỗi khóa theo thứ tự sắp xếp, thêm khóa và giá trị tương ứng vào dic2.
- dic2 có tất cả cặp key-value theo thứ tự sắp xếp của khóa.
Phương pháp 2 – Sắp xếp dictionary theo value
Trong cách này, dictionary được sắp xếp theo thứ tự tăng dần của giá trị.
Đầu vào:
{2:90, 1: 100, 8: 3, 5: 67, 3: 5}Đầu ra:
{8:3, 3:5, 5:67, 2:90, 1:100}Như thấy, dictionary được sắp xếp theo giá trị.
- Dùng
sorted()vàitems()cùng nhau để sắp xếp dictionary theo value. items()dùng để lấy các item (giá trị) của dictionary.key=lambda x: x[1]là cơ chế sắp xếp dùng lambda function.- Điều này cho ta các cặp key-value sau đó chuyển thành dictionary bằng
dict().
Ví dụ
dic = {2:90, 1: 100, 8: 3, 5: 67, 3: 5}
dic2 = dict(sorted(dic.items(), key=lambda x: x[1]))
print(dic2)Kết quả
{8: 3, 3: 5, 5: 67, 2: 90, 1: 100}