2016-11-24 168 views
3

我不知道它是否可行。我試圖找到下列條件排序嵌套列表的方式嵌套列表和python排序

  1. 我要排序表格1點到另一個(不是整個名單只是其中的一部分)
  2. 排序應該上完成子列表

的我想要什麼的觀念的第三個要素的基礎上:

PAE=[['a',0,8], 
     ['b',2,1], 
     ['c',4,3], 
     ['d',7,2], 
     ['e',8,4]] 

    #PAE[1:4].sort(key=itemgetter(2)) (something like this)  
    or  
    #sorted(PAE[1:4],key=itemgetter(2)) (something like this) 
` #^i know both are wrong but just for an idea 
` 
    #output should be like this 
    ['a', 0, 8] 
    ['b', 2, 1] 
    ['d', 7, 2] 
    ['c', 4, 3] 
    ['e', 8, 4] 

我是新來的蟒蛇,但我想我的水平最好找到一個解決方案,但失敗了。

回答

3

排序切片和寫回

>>> PAE[1:4] = sorted(PAE[1:4], key=itemgetter(2)) 
>>> PAE 
[['a', 0, 8], ['b', 2, 1], ['d', 7, 2], ['c', 4, 3], ['e', 8, 4]] 
+0

謝謝。簡短而正確的答案。 – Syed

3

這應該這樣做:

from operator import itemgetter 
PAE=[['a',0,8], 
    ['b',2,1], 
    ['c',4,3], 
    ['d',7,2], 
    ['e',8,4]] 

split_index = 1 

print PAE[:split_index]+sorted(PAE[split_index:],key=itemgetter(2)) 
#=> [['a', 0, 8], ['b', 2, 1], ['d', 7, 2], ['c', 4, 3], ['e', 8, 4]] 
+0

謝謝你的解決方案。 – Syed

0

這裏不裂傾向,問題是,什麼是最好的可讀性

PAE=[['a',0,8], 
    ['b',2,1], 
    ['c',4,3], 
    ['d',7,2], 
    ['e',8,4]] 

print (sorted(PAE, key=lambda PAE: PAE[1] if not PAE[1] else PAE[2])) 
>>> [['a', 0, 8], ['b', 2, 1], ['d', 7, 2], ['c', 4, 3], ['e', 8, 4]] 
+1

我不認爲它回答了這個問題。你的排序取決於每個列表的第二個元素,對吧? –

+1

沒有埃裏克,在這種情況下,排序鍵是相對的 –

+1

是的,但問題沒有提到它。 –