2015-12-09 25 views
6

Tôi có từ điển {'Bill': 4, 'Alex' : 4, 'Bob' : 3, "Charles": 7}Sắp xếp từ điển theo nhiều giá trị

Tôi cần sắp xếp từ điển này trước bằng số, sau đó theo thứ tự bảng chữ cái. Nếu 2 mục có cùng số khóa, chúng cần được sắp xếp theo thứ tự bảng chữ cái.

Kết quả của điều này nên được Bob, Alex, Bill, Charles

Tôi đã cố gắng sử dụng lambda, danh sách hiểu, vv nhưng tôi dường như không thể nhận được chúng để sắp xếp một cách chính xác.

Trả lời

11

Sử dụng sorted với chức năng chủ chốt (thứ tự theo giá trị (d[k]) trước, sau đó chìa khóa k):

>>> d = {'Bill': 4, 'Alex' : 4, 'Bob' : 3, "Charles": 7}  
>>> sorted(d, key=lambda k: (d[k], k)) 
['Bob', 'Alex', 'Bill', 'Charles'] 
4

Sắp xếp trên các mục của từ điển (là bộ dữ liệu) bằng cách sử dụng sorted(). Bạn có thể chỉ định phím loại mà sẽ bằng giá trị của từ điển, và sau đó phím của nó:

>>> d = {'Bill': 4, 'Alex' : 4, 'Bob' : 3, "Charles": 7} 
>>> sorted(d.items(), key=lambda x:(x[1],x[0])) 
[('Bob', 3), ('Alex', 4), ('Bill', 4), ('Charles', 7)] 
>>> [t[0] for t in sorted(d.items(), key=lambda x:(x[1],x[0]))] 
['Bob', 'Alex', 'Bill', 'Charles'] 
Các vấn đề liên quan