说我有一本字典然后我有一个包含字典键的列表。有没有办法根据字典值对列表进行排序?
我一直在尝试这个:
trial_dict = {'*':4, '-':2, '+':3, '/':5}
trial_list = ['-','-','+','/','+','-','*']
我开始使用:
sorted(trial_list, key=trial_dict.values())
得到了:
TypeError: 'list' object is not callable
然后我去创建一个可以用trial_dict.get()
调用的函数:
def sort_help(x):
if isinstance(x, dict):
for i in x:
return x[i]
sorted(trial_list, key=trial_dict.get(sort_help(trial_dict)))
我不认为sort_help
函数对排序有任何影响。我不确定使用trial_dict.get()
是否也是正确的方法。
答案 0 :(得分:13)
是dict.get是正确的(或至少是最简单的)方式:
sorted(trial_list, key=trial_dict.get)
正如Mark Amery评论的那样,等效的显式lambda:
sorted(trial_list, key=lambda x: trial_dict[x])
可能会更好,至少有两个原因:
答案 1 :(得分:5)