2012-08-01 74 views
14

Làm cách nào để sắp xếp từ điển Python dựa trên giá trị bên trong của từ điển lồng nhau?Sắp xếp từ điển Python dựa trên giá trị từ điển lồng nhau

Ví dụ, sắp xếp mydict dưới đây dựa trên giá trị của context:

mydict = { 
    'age': {'context': 2}, 
    'address': {'context': 4}, 
    'name': {'context': 1} 
} 

Kết quả sẽ được như thế này:

{ 
    'name': {'context': 1}, 
    'age': {'context': 2}, 
    'address': {'context': 4}  
} 
+1

Bạn có muốn xuất danh sách không? hoặc đầu ra từ điển? – Deniz

Trả lời

15
>>> from collections import OrderedDict 
>>> mydict = { 
     'age': {'context': 2}, 
     'address': {'context': 4}, 
     'name': {'context': 1} 
} 
>>> OrderedDict(sorted(mydict.iteritems(), key=lambda x: x[1]['context'])) 
OrderedDict([('name', {'context': 1}), ('age', {'context': 2}), ('address', {'context': 4})]) 
5

Bạn không thể sắp xếp một cuốn từ điển không có gì khó khăn khi bạn cố gắng , bởi vì họ là một bộ sưu tập không có thứ tự. Thay vào đó hãy sử dụng mô hình mẫu collections.

+0

Ngoài ra, người ta có thể thực hiện đọc danh sách gnarly trên các phím, sử dụng lambda để xem giá trị của mỗi khóa - và khó khăn khi làm như vậy là một bài học tuyệt vời về lý do sử dụng 'OrderedDict'. –

+0

Cập nhật: như python 3.6, thứ tự chèn từ điển được giữ nguyên, vì vậy câu lệnh này không còn đúng nữa. – pelson

Các vấn đề liên quan