2013-03-06 11 views
5

Sono un po 'nuovo a Python ...Python: come ordinare un array di dicts in base a due campi?

Ho una serie di dicts che ho avuto leggendo un file contenente i messaggi JSON, vale a dire utilizzando qualcosa di simile:

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

Ogni messaggio JSON ha, tra le altre cose, tre campi: "data" e "tipo" e "posizione". Ho bisogno di ordinare l'array prima per data, poi per tipo all'interno di ogni blocco di date identiche, quindi per posizione all'interno di ciascun blocco di tipi identici. Come lo posso fare? Grazie mille!

+0

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

+0

Anche se qui non è necessario, è bello sapere che python's sort [è stabile] (http://wiki.python.org/moin/HowTo/Sorting/#Sort_Stability_and_Complex_Sorts). –

risposta

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

Le tuple sono ordinate naturalmente prima dal primo elemento, poi dagli elementi successivi.

Problemi correlati