2013-01-06 54 views
1

我是用這個如何用兩個鍵排序lambda?

ThreadList.append([''.join(map(str,[Thread])), date, rrf[5]]) 

SendThreadList = '' 

ThreadList = sorted(ThreadList, key=lambda Entry: Entry[1], reverse=True) 
ThreadList = sorted(ThreadList, key=lambda Entry: Entry[2], reverse=True) 

排序只顯示第二排序,怎麼辦與密鑰的兩個entrys排序?

+0

對不起我的英語不好,我是巴西人 –

+0

你想用'''.join(map(str,[Thread]))'來實現什麼?應用'map',我得到'''.join([str(Thread)])'當然這只是'str(Thread)' – Eric

回答

6

如果你想入世排序[1],然後輸入[2],然後你讓拉姆達回報既作爲一個元組...:

ThreadList = sorted(ThreadList, key=lambda Entry: (Entry[1], Entry[2]), reverse=True) 

什麼是有時更具可讀性(可能稍快)是利用operator模塊,並使用key=operator.itemgetter(1, 2)

+0

嘿,謝謝,如果檢查Entry [2] = 1 ? –

+0

@GeorgeSet。對不起 - 我不明白 - 你可以嘗試重新措詞嗎? –

+0

ThreadList = sorted(ThreadList,key = lambda Entry:(Entry [1],Entry [2]),reverse = True) –

1

雖然這是錯誤的方式做到這一點,如果你交換順序的示例將工作:

ThreadList = sorted(ThreadList, key=lambda Entry: Entry[2], reverse=True) 
ThreadList = sorted(ThreadList, key=lambda Entry: Entry[1], reverse=True) 

Python的排序是穩定的 - 如果兩個條目在[1]上聯繫在一起,他們將保持他們的排序。