2013-08-09 9 views
12

Ho una lista di liste che contiene gli utenti ei punteggi come segue:python: ordinare un elenco delle liste da un elemento nella sottolista

[["user1", 100], ["user2", 234], ["user3", 131]...] 

voglio produrre un elenco che ordina gli utenti in base al punteggio in ordine decrescente:

[["user2", 234], ["user3", 131], ["user1", 100]...] 

Come posso fare questo tipo di ordinamento?

risposta

15
>>> li = [["user1", 100], ["user2", 234], ["user3", 131]] 
>>> 
>>> import operator 
>>> 
>>> sorted(li, key=operator.itemgetter(1)) # Ascending order 
[['user1', 100], ['user3', 131], ['user2', 234]] 

>>> sorted(li, key=operator.itemgetter(1), reverse=True) # Reverse Sort 
[['user2', 234], ['user3', 131], ['user1', 100]] 
6

sorted accettare la funzione key opzionale e il parametro inverso.

>>> sorted([["user1", 100], ["user2", 234], ["user3", 131]], key=lambda x: x[1], reverse=True) 
[['user2', 234], ['user3', 131], ['user1', 100]] 
5
l = [["user1", 100], ["user2", 234], ["user3", 131]] 
l.sort(lambda x, y: x[1]) 
8

È possibile personalizzato il comportamento ordina per passare una chiave e retromarcia. sorted restituirà un nuovo elenco. Se l'ordinamento sul posto desiderato, utilizzare list.sort.

>>> a = [["user1", 100], ["user2", 234], ["user3", 131]] 
>>> sorted(a, key=lambda x: x[1], reverse=True) 
[['user2', 234], ['user3', 131], ['user1', 100]] 
Problemi correlati