2013-03-06 79 views
5

Tôi hơi mới để Python ...Python: cách sắp xếp mảng ma trận theo hai trường?

Tôi có một mảng của dicts mà tôi nhận bằng cách đọc một tập tin chứa thông điệp JSON, tức là sử dụng một cái gì đó như thế này:

import json 
ws = [] 
with open('messages.txt', 'r') as f: 
    for line in f: 
     data = json.loads(line) 
     ws.append(data) 

Mỗi nhắn JSON có, trong số những thứ khác, ba trường: "ngày" và "loại" và "vị trí". Tôi cần phải sắp xếp mảng đầu tiên theo ngày, sau đó theo loại trong mỗi khối ngày giống nhau, sau đó theo vị trí trong mỗi khối của các loại giống hệt nhau. Làm thế nào tôi có thể làm điều đó? Thx nhiều!

+0

Hãy thử cách này: http://stackoverflow.com/questions/1143671/python-sorting-list-of-dictionaries-by-multiple-keys/1144405#1144405 – hughdbrown

+0

Mặc dù không cần thiết ở đây, thật tuyệt khi biết rằng python's sắp xếp [ổn định] (http://wiki.python.org/moin/HowTo/Sorting/#Sort_Stability_and_Complex_Sorts). –

Trả lời

9
ws.sort(key=lambda datum: (datum['date'], datum['type'], datum['location'])) 

Các bộ dữ liệu được sắp xếp tự nhiên trước bởi phần tử đầu tiên, sau đó là các thành phần kế tiếp.

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