2014-04-03 72 views
0

好吧,所以我有一個包含多個列表的列表。排序字符串和整數列表的列表

清單格式如下:

list1 = [["Value1",1],["Value2",3],["Value3",2]] 

我想第二值到內部列表進行排序,這樣我可以,例如,爲了打印出來,比如值1,值3,值2。

任何幫助如何做到這一點,將不勝感激。提前致謝!

回答

3

如何使用lambda:

>>> list1 = [["Value1",1],["Value2",3],["Value3",2]] 
>>> 
>>> list1.sort(key=lambda x: x[1]) 
>>> list1 
[['Value1', 1], ['Value3', 2], ['Value2', 3]] 
>>> 
+0

人們低估了'lambda'。它比'itemgetter'更強大:假設你想按第一個元素的絕對值排序。或者用'x [0] .lower()'或者用'int(x [0] [5:])':你可能會用'lambda'結束。 (另一方面,有時人們認爲'lambda'有一些超級大國,用'def'定義的函數缺乏。從來沒有弄清楚爲什麼。) – DSM

+0

@DSM是的,對'lambda'有很多不同的意見,實際上[計劃](http://www.artima.com/weblogs/viewpost.jsp?thread=98196)甚至在python 3000中刪除它:) – alecxe

+0

這是比其他響應更定製。我已將此標記爲答案,謝謝! – SSBlur

3

可以使用sorted()itemgetter()

>>> from operator import itemgetter 
>>> list1 = [["Value1",1],["Value2",3],["Value3",2]] 
>>> sorted(list1, key=itemgetter(1)) 
[['Value1', 1], ['Value3', 2], ['Value2', 3]] 
+0

謝謝你的快速反應!並且,謝謝,這很好! – SSBlur