2013-08-09 12 views
12

Mam listę list, który zawiera użytkowników i wyniki w następujący sposób:python: posortować listę list od pozycji w podmenu

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

Chcę stworzyć listę, która sortuje użytkownikom wynik w odmowa zamówienia:

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

Jak mogę zrobić tego rodzaju?

Odpowiedz

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 zaakceptować opcjonalną funkcję key i odwrócić parametr.

>>> 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

Można niestandardowe zachowanie sortowania przez przekazać klucz i do tyłu. sorted zwróci nową listę. Jeśli chcesz sortować w miejscu, użyj list.sort.

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