2013-12-18 55 views
2

我有一本词典,如mydict={'tom': '100','dick': '50','harry': '121','jim':'25'}。注意值是字符串格式的数字。 我写了一个函数降序排列基于价值观的按键排序基于数值转换为整数后的值对字典键进行排序

def sortfunc(dict_arg): 
    return sorted(dict_arg.keys(),key=dict_arg.get,reverse=True) 

所以我的输出应该是['harry','tom','dick','jim']因为“哈利”具有121的最高值和Jim有25 但我的最低值得到['dick','jim','harry','tom'],因为值是asciibetically有序的。现在我需要找出一种方法来将值转换为整数,并按转换为整数的值对键进行排序。任何提示将我推向正确的方向,我感激不尽。

回答

5

你可以在这里使用lambda功能,将值转换为int

mydict={'tom': '100','dick': '50','harry': '121','jim':'25'} 
print sorted(mydict, key = lambda k: int(mydict[k]), reverse = True) 

输出

['harry', 'tom', 'dick', 'jim'] 
+0

SO是利用拉姆达做干净的唯一途径?.. 。只是一厢情愿地想通过说key = mydict.get(int)来实现....感谢你的答案。 – user3113351

+0

@thefoutheye我想你是对的。我不想通过放弃可读性来让事情复杂化。谢谢。 – user3113351

+0

@ user3113351不客气:) – thefourtheye

相关问题