2016-03-04 53 views
2

我有一個字典y = {6:34,5:40,3:70,2:80}和列表m = [5,2,3]僅具有字典Y的一些鍵,我有基於字典y = {2:80,3:70,5:40,6:34}的值進行排序,並僅考慮存在於列表中m和最終密鑰字典的值進行排序列表結果應該已經整理m =[2,3,5]的Python:基於

+0

我沒有得到烏拉圭回合問題...你要根據自己的價值觀弗朗的字典或什麼對列表進行排序? –

回答

4

您可以使用sorted()與將根據你的字典值進行排序列表的一個關鍵功能:

>>> sorted(m, key= lambda x: -y.get(x)) 
[2, 3, 5] 

注意,由於sorted()是升序模式下的項目,你可以使用negat字典值的排序值使它按降序對列表進行排序。或者你可以改變reverse參數True

>>> sorted(m, key= lambda x: y.get(x), reverse=True) 
[2, 3, 5] 
+0

如果我有方法排序(m,y)我應該排序它在相同的引用m ...所以裏面的方法,如果我打印「之前」,m和調用排序(m,鍵= lambda x:y.get x),reverse = True),並打印「After」後,mm應該排序在同一個參考文獻中......我該怎麼做? – FryMan

+0

@SagarR對不起,我不能讓你,請認真加上你對這個問題的解釋。 – Kasramvd

+0

在下面的代碼中,當我打印「排序後」時,m ...它應該打印[2,3,5]不是[5,2,3]我該怎麼做?進口操作者 DEF排序(Y,M): \t排序(米,鍵=拉姆達X:-y.get(X)) \t 如果名稱== '主': \t Y = {6:34, 5:40.3:70.2:80} 米= [5,2,3] \t打印 「排序之前」,米 \t排序(Y,M) \t打印 「排序後」,米 – FryMan