2016-03-04 55 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