在Python中,使用sorted()方法,是否可以按优先级字段对字典列表进行排序?

时间:2014-10-24 08:58:32

标签: python sorted

我有一个词典列表,我按照给定的顺序按多个键对它们进行排序(第一个'名称',第二个'开始'第三个'结束' ):

sorted_list = sorted(list, key=lambda dict: (dict['Name'], dict['Start'], -dict['End']))

我希望最后一次排序是由优先级字段完成的:

dict['Status']是一个字符串名称,如"基因"," mRNA","外显子"和" CDS"。名称"基因"必须高于其他人和" CDS"低于其他人。

感谢您的回答,

1 个答案:

答案 0 :(得分:2)

第一条建议:不要使用内置名称作为变量名称。当你稍后尝试使用它们时,你会感到很困惑。 E.g。

 dict = [1, 2, 3]
 d = dict(a="b")

会悲惨地失败。所以 - 永远不要调用变量列表,字典,文件,str,int和所有其他的。

您的实际问题通过简单的查找表解决:

priorities = dict(gene=0, CDS=1000)
sorted_list = sorted(list, 
        key=lambda d: (d['Name'], d['Start'], -d['End'], 
        priorities.get(d['Status'], 1)))