> Il giorno 24 apr 2017, alle ore 17:51, Marcello <[email protected]> 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
_______________________________________________
Python mailing list
[email protected]
http://lists.python.it/mailman/listinfo/python