Computer >> Máy Tính >  >> Lập trình >> Python

Làm cách nào để sắp xếp một từ điển Python theo giá trị?

Phân phối chuẩn của Python chứa mô-đun tập hợp. Nó có các định nghĩa về các kiểu dữ liệu vùng chứa hiệu suất cao. OrderedDict là một lớp phụ của từ điển ghi nhớ thứ tự của các mục được thêm vào đối tượng từ điển. Khi lặp qua một từ điển có thứ tự, các mục được trả về theo thứ tự khóa của chúng được thêm vào lần đầu tiên.

>>> from collections import OrderedDict
>>> D = {5:'fff', 3:'ttt', 1:'ooo',4:'bbb', 2:'ddd'}
>>> OrderedDict(D.items())
OrderedDict([(5, 'fff'), (3, 'ttt'), (1, 'ooo'), (4, 'bbb'), (2, 'ddd')])

Chúng ta cũng cần đến hàm sorted () để sắp xếp các phần tử trong một thứ có thể lặp lại theo một thứ tự được chỉ định. Hàm nhận một hàm làm đối số được sử dụng làm khóa để sắp xếp. Vì chúng tôi dự định sắp xếp từ điển trên các giá trị, chúng tôi lấy phần tử đầu tiên của bộ tuple làm khóa để sắp xếp.

>>> OrderedDict(sorted(D.items(), key = lambda t: t[1]))
OrderedDict([(4, 'bbb'), (2, 'ddd'), (5, 'fff'), (1, 'ooo'), (3, 'ttt')])

Đối tượng OrderedDict có thể được phân tích cú pháp thành một đối tượng từ điển thông thường

>>> D1 = dict(OrderedDict(sorted(D.items(), key = lambda t: t[1])))
>>> D1
{4: 'bbb', 2: 'ddd', 5: 'fff', 1: 'ooo', 3: 'ttt'}