使用自定义序列对值字典进行排序

Moh*_*hif 0 python sorting dictionary

所以基本上我有一个字典列表,其中包含以下值:

[
 {'First Name ':'Stephen', 'Last Name':'Queen','Age':61,'Marks':89},
 {'First Name ':'Stephen', 'Last Name':'Queen','Age':89,'Marks':68},
 {'First Name ':'Angelica', 'Last Name':'King','Age':39,'Marks':84},
 {'First Name ':'Stephen', 'Last Name':'King','Age':29,'Marks':78},
 {'First Name ':'Stephen', 'Last Name':'Queen','Age':61,'Marks':84},
]
Run Code Online (Sandbox Code Playgroud)

所以我基本上想要在First Name上的'升序'中排序First,然后在Second Name上按'升序'排序,然后在Age上按'降序'排序,最后在标记上排序'降序'.因此,排序后应该如下所示:

[
 {'First Name ':'Angelica', 'Last Name':'King','Age':39,'Marks':84},
 {'First Name ':'Stephen', 'Last Name':'King','Age':29,'Marks':78},
 {'First Name ':'Stephen', 'Last Name':'Queen','Age':89,'Marks':68},
 {'First Name ':'Stephen', 'Last Name':'Queen','Age':61,'Marks':98},
 {'First Name ':'Stephen', 'Last Name':'Queen','Age':61,'Marks':89}
]
Run Code Online (Sandbox Code Playgroud)

所以我的问题是使用Pythonic方法有效地完成它.我试过这里提到的解决方案,但是想不到将它复制到我的情况,我希望同时在多个键上自定义顺序(即创建一种映射器以用户定义的方式对字典进行排序).

kab*_*nus 13

这很简单,因为默认情况下python根据第一个单元格排序元组/列表,然后根据第一个单元格排序等等...所以扩展您链接到的解决方案:

newlist = sorted(list_to_be_sorted, key=lambda k: (k['First Name '],k['Last Name'],-k['Age'],-k['Marks']))
Run Code Online (Sandbox Code Playgroud)

-标志将欺骗升序排序上做"标记"和"时代"的后裔.