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

Rispondere a