2011-04-14 56 views
0

如果我有一個列表python如何對2個值進行排序

listOfFiles = [<str>,<intA>,<intB>] 

如何先用intA然後用intB對這個列表進行排序?

最終結果看起來像

<str>,1,1 
<str>,1,2 
<str>,1,3 
<str>,2,1 
<str>,2,2 
etc 

回答

10

使用的化合物鍵(或更確切地說,一個序列作爲一個鍵)。

listOfFiles.sort(key=operator.itemgetter(1, 2)) 
+0

'operator'救援! – jathanism 2011-04-14 18:39:58

+0

哇,不知道你可以傳遞多個參數給'operator.itemgetter'。 – 2011-04-15 08:43:58

0

Python列表排序是在適當的位置完成的,在2.4(我相信它可能是2.5)後保​​證穩定。這意味着您可以排序像這樣,應該得到你想要的結果:

listOfFiles.sort(key = lambda x: x[2]) 

listOfFiles.sort(key = lambda x: x[1]) 

我相信你確實有一個列表的列表或元組的列表。如果不是,請提供一個更完整的數據結構示例。

+0

我只會做lambda x [1],x [2],所以你只需要排序一次。 – recursive 2011-04-14 18:39:18

0

這也適用於:

listOfFiles.sort(key=lambda x: (x[1], x[2])) 
相關問題