> 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