[Python] Riordinare un dizionario
Giovanni Porcari
giovanni.porcari a softwell.it
Lun 24 Apr 2017 18:45:18 CEST
> Il giorno 24 apr 2017, alle ore 17:51, Marcello <marcello a linuxvil.it> ha scritto:
>
> Ciao a tutti,
>
> devo ordinare un dizionario in base al nome.
> Ho provato, cercando sul web, OrderedDict dovrebbe essere quello che fa al caso mio.
>
> import collections
> diz = [{'add': '10', 'name': 'ccc', 'pwd': '12'}, {'add': '11', 'name': 'aaa', 'pwd': '45'}, {'add': '12', 'name': 'bbb', 'pwd': '79'}]
> print (collections.OrderedDict(sorted(diz.items(), key=lambda t: t[1])))
>
> ma mi viene restituito un errore
> AttributeError: 'list' object has no attribute 'items'
>
> E' come se diz venisse visto come lista e non come dizionario.
> Dove sbaglio?
La cosa più simile a quello che stai facendo e che potrebbe funzionare è :
import collections
diz = [{'add': '10', 'name': 'ccc', 'pwd': '12'}, {'add': '11', 'name': 'aaa', 'pwd': '45'}, {'add': '12', 'name': 'bbb', 'pwd': '79'}]
print collections.OrderedDict([(d['name'],d) for d in sorted(diz, key=lambda t: t['name'])])
Ovvero ti costruisce un OrderdDict in cui la chiave è il 'name' e iol valore è il dizionario originale.
Quindi trasformi la lista di dizionari in un OrderedDict ordinato in base alla elemento 'name' dei dizionari originali.
Se non ho capito nulla… abbi pazienza. Ci ho provato ;)
G
Maggiori informazioni sulla lista
Python