2016-03-16 46 views
0

假設我有一個名爲L的列表和名爲arr1arr2的兩個屬性字典,其鍵是列表L的元素。現在我想按照以下方式對L進行排序。如何使用兩個屬性值在Python中對列表進行排序?

  1. L應按升序憑藉存在於arr1的屬性值的排序。
  2. 如果兩個元素iLj具有相同的屬性arr1,I,E,如果arr1[i]arr[j]是相等的,那麼,我們應該尋找的屬性值arr2

舉個例子,假設

L=[0,1,2,3,4,5,6] 
arr1={0:30,1:15,2:15,3:20,4:23,5:20,6:35} 
arr2={0:6,1:8,2:6,3:17,4:65,5:65,6:34} 

排序L[2,1,3,5,4,0,6],1和2之間順序由arr2決定,所以確實排序3和5之間的次序的其餘都是決定通過arr1

回答

1

只需使用同值的元組從arr1arr2作爲排序關鍵字:

L.sort(key=lambda x: (arr1[x], arr2[x])) 
# [2, 1, 3, 5, 4, 0, 6] 

這是在5和3的順序,這將是一致您預期的結果不同,如果排序順序會基於ARR2被

L.sort(key=lambda x: (arr1[x], -arr2[x])) 
# [1, 2, 5, 3, 4, 0, 6] 

但現在的1排序,2是不同的,你的例子似乎並沒有以一致的方式來進行排序。

+0

明白了,謝謝。我在最後的輸出中犯了一個錯誤。 –

相關問題