Sto cercando di ordinare un elenco di tuple come questi:Ordina a vari livelli in Python
[('Pineapple', 1), ('Orange', 3), ('Banana', 1), ('Apple', 1), ('Cherry', 2)]
L'elenco ordinato dovrebbe essere:
[('Orange', 3), ('Cherry', 2), ('Apple', 1), ('Banana', 1), ('Pineapple', 1)]
Così, qui prima l'elenco deve essere ordinato basato su tuple[1]
in ordine decrescente, quindi se i valori tuple
() corrispondono come per Apple
, Banana
& Pineapple
- l'elenco deve essere ulteriormente ordinato in base a tuple[0]
in ascendi ordine.
Ho provato il possibile modi-
top_n.sort(key = operator.itemgetter(1, 0), reverse = True)
# Output: [(Orange, 3), (Cherry, 2), (Pineapple, 1), (Banana, 1), (Apple, 1)]
come "reverse = True"
, ananas, poi banana, ...
fine ho dovuto trovare una soluzione:
top_n.sort(key = operator.itemgetter(0), reverse = False)
top_n.sort(key = operator.itemgetter(1), reverse = True)
C'è un modo migliore per arrivare alla soluzione come il mio primo approccio. Sto cercando di esplorare di più su Python, cercando così un tale tipo di soluzione.
In realtà si potrebbe semplicemente fare: 'top_n.sort(); top_n.sort (key = itemgetter (1), reverse = True) '. Perché "reverse = False" è l'impostazione predefinita. Anche l'uso di 'itemgetter (0)' non ha molto senso poiché le sequenze sono già ordinate dal primo elemento in modo da evitare semplicemente l'uso di 'chiave'. – Bakuriu
@Bakuriu: Sì! Vero. Grazie per il suggerimento. –