在Python中,如何按字典的某个值+按字母顺序对字典列表进行排序?

Cra*_*erb 3 python sorting dictionary list

好的,这就是我要做的...我知道itemgetter()排序可以按字母排序很容易,但如果我有这样的东西:

[{'Name':'TOTAL','Rank':100},{'Name':'Woo Company','Rank':15},{'Name':'ABC Company','Rank':20} ]

我希望它按字母顺序排序(按名称)+包括条件:名称:'TOTAL'应该在序列的最后列出,如下所示:

[{'姓名':'ABC公司','排名':20},{'姓名':'Woo公司','排名':15},{'姓名':'总计','排名':100} ]

我该怎么办?

Jar*_*die 10

这里最好的方法是装饰排序键... Python将按元组顺序对元组进行排序,因此使用排序条件构建元组键:

sorted(list_of_dicts, key=lambda d: (d['Name'] == 'TOTAL', d['Name'].lower()))
Run Code Online (Sandbox Code Playgroud)

这导致排序键:

  • {True,'total'){'Name':'TOTAL','Rank':100}
  • ('''''''''''''''''''''''''''''''''''''''''''''''
  • (对于{'姓名':'ABC公司','排名':20},这是假的''abc公司')

由于False早于True排序,名称不是TOTAL的那些将最终结合在一起,然后按字母顺序排序,TOTAL将最终结束.