Ho un dizionario che deve essere ordinato. Voglio ordinare il dict in base ai valori. E come passo successivo, se due chiavi hanno lo stesso valore, voglio ordinare in base ai valori lessicografici delle chiavi.Ordinamento basato sulla prima colonna e quindi sulla colonna successiva
Ho provato questo.
>>> l
{'a': 5, 'aa': 5, 'c': 1, 'b': 7}
>>> sorted(l)
['a', 'aa', 'b', 'c']
>>> sorted(l.items())
[('a', 5), ('aa', 5), ('b', 7), ('c', 1)]
>>> sorted(l.items(), reverse=True)
[('c', 1), ('b', 7), ('aa', 5), ('a', 5)]
>>> sorted(l.items(), key=l.get, reverse=True)
[('a', 5), ('aa', 5), ('c', 1), ('b', 7)]
>>> l
{'a': 5, 'aa': 5, 'c': 1, 'b': 7}
>>> 5>7
False
>>> sorted(l.items(), key=l.get, reverse=True)
[('a', 5), ('aa', 5), ('c', 1), ('b', 7)]
>>> sorted(l, key=l.get, reverse=True)
['b', 'a', 'aa', 'c']
>>> s=sorted(l, key=l.get, reverse=True)
>>> s
['b', 'a', 'aa', 'c']
>>> s.sort()
>>> s
['a', 'aa', 'b', 'c']
Sì, questo è quello che sto cercando. Grazie, testerò la risposta e la accetterò. –
Contento di poter aiutare :) –
Come nota a margine, la funzione lambda può essere sostituita dalla funzione equivalente, più efficiente, leggermente meno ovvia 'operator.itemgetter (1, 0)'. –