Ho un dict in cui ogni chiave fa riferimento a un valore int. Qual è il modo migliore per ordinare le chiavi in un elenco a seconda dei valori?Ordinamento chiavi del dizionario in python
risposta
>>> mydict = {'a':1,'b':3,'c':2}
>>> sorted(mydict, key=lambda key: mydict[key])
['a', 'c', 'b']
my_list = sorted(dict.items(), key=lambda x: x[1])
@ user815423426 hai modificato il mio post 's/list/my_list /' perché "list è una parola chiave in python". La tua modifica va bene, ma la lista non è una parola chiave (c.f. https://docs.python.org/3/reference/lexical_analysis.html#keywords), quindi il mio frammento di programma sarebbe (bytecode) compilato ed eseguito. È comunque un nome nello spazio dei nomi '__builtins__', ed è una cattiva pratica mettere in ombra quel nome - con una variabile di locale chiamata lista - e orribile per sovrascriverlo - con una variabile globale chiamata lista, ad es. 'list = tuple'. –
[v[0] for v in sorted(foo.items(), key=lambda(k,v): (v,k))]
ho come questo:
sorted(d, key=d.get)
Bello, pensavo sarebbe bello avere una soluzione elegante che fornisca coppie (chiave, valore) ordinate per chiave. ... e non richiede di fornire il nome della variabile dict più di una volta (tendo ad avere nomi di variabili descrittive molto lunghe). d.iteritems() sembra ancora il più utile. – travc
In secondo luogo la soluzione elegante, ordinata k, v pair – crock1255
Inoltre, questo chiede sull'ordinamento a chiave, la risposta è legata sull'ordinamento per valore. – ForeverWintr
le risposte sottostanti restituiscono un elenco ordinato delle sole chiavi (che è banale). la risposta alla domanda "duplicata" sull'ordinamento per valore restituisce una lista ordinata di coppie chiave/valore (ordinata per valore). Se lo vuoi ordinare per tasto usa semplicemente 0 invece di come parametro per operator.itemgetter(). – ScienceFriction