我有一个词典列表,我按照给定的顺序按多个键对它们进行排序(第一个'名称',第二个'开始'第三个'结束' ):
sorted_list = sorted(list, key=lambda dict: (dict['Name'], dict['Start'], -dict['End']))
我希望最后一次排序是由优先级字段完成的:
dict['Status']
是一个字符串名称,如"基因"," mRNA","外显子"和" CDS"。名称"基因"必须高于其他人和" CDS"低于其他人。
感谢您的回答,
答案 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)))