2013-05-24 40 views
11

Làm cách nào để sắp xếp mảng liên kết theo khóa trong Python?Sắp xếp các mảng liên kết trong Python

Tôi có cấu trúc sau:

people = [ 
    {'name' : 'Bob', 'number' : '123'}, 
    {'name' : 'Bill', 'number' : '234'}, 
    {'name' : 'Dave', 'number' : '567'}, 
] 

Tôi muốn sắp xếp theo tên. Có chức năng tích hợp để thực hiện việc này không?

+0

Bạn có google "Sắp xếp mảng kết hợp trong python" không? Điều gì đã xảy ra với tài liệu bạn tìm thấy khi phân loại mảng liên kết? – djechlin

+0

googling tiêu đề của câu hỏi này ... đưa bạn quay lại ngay câu hỏi này. – worc

Trả lời

7

Sử dụng key tham số sorted chức năng của:

sorted(people, key=lambda dct: dct['name']) 

Có một excellent Sorting HOWTO điều này giải thích cách làm việc này.


>>> people = [ 
    {'name' : 'Bob', 'number' : '123'}, 
    {'name' : 'Bill', 'number' : '234'}, 
    {'name' : 'Dave', 'number' : '567'}, 
]  
>>> sorted(people, key=lambda dct: dct['name']) 
[{'name': 'Bill', 'number': '234'}, 
{'name': 'Bob', 'number': '123'}, 
{'name': 'Dave', 'number': '567'}] 

Ngoài ra, bạn có thể sử dụng

import operator 
sorted(people, key=operator.itemgetter('name')) 

Sử dụng operator.itemgetter('name') là hơi nhanh hơn so với sử dụng lambda dct: dct['name'].

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