2013-03-06 17 views
5

Ich bin etwas Neues zu Python ...Python: Wie sortiere ich Array von Dicts durch zwei Felder?

Ich habe ein Array von dicts, die ich durch das Lesen einer Datei-Nachrichten mit JSON bekam, also so etwas wie dies mit:

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

Jede JSON Nachricht hat, unter anderem drei Felder: "date" und "type" und "location". Ich muss das Array zuerst nach Datum, dann nach Typ innerhalb jedes Blocks mit identischen Daten und dann nach Ort innerhalb jedes Blocks identischer Typen sortieren. Wie kann ich das machen? Vielen Dank!

+0

Try this: http://stackoverflow.com/questions/1143671/python-sorting-list-of-dictionaries-by-multiple-keys/1144405#1144405 – hughdbrown

+0

Obwohl es hier nicht gebraucht wird, ist es schön, dass Pythons zu wissen sort [ist stabil] (http://wiki.python.org/moin/HowTo/Sorting/#Sort_Stability_and_Complex_Sorts). –

Antwort

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

Tupel werden natürlich zuerst nach dem ersten Element und dann nach den folgenden Elementen sortiert.

Verwandte Themen