首页 > 解决方案 > 如何在列表中组合排序参数?

问题描述

我有 1 个这样的列表:

list = [{'day':'1','month':'2'},{'day':'3','month':'3'},{'day':'2','month':'6'},{'day':'1','month':'1'}]

我想先按月和后天对其进行排序,例如(day=1 and month=2)>(day=5 and month=1)。

上述列表的输出将变为:

list = [{'day':'1','month':'1'},{'day':'1','month':'2'},{'day':'3','month':'3'},{'day':'2','month':'6'}]

我试过了

sorted(list, key= lambda i: i['month'+'day'])

但这不起作用。

标签: pythonlist

解决方案


您需要使用tuple要排序的字段指定 a。另请注意,您需要将值转换为 int,否则顺序将是字典顺序的,这意味着例如'12' < '9'. 所以:

l = [{'day':'1','month':'2'},{'day':'3','month':'3'},{'day':'2','month':'6'},
     {'day':'1','month':'1'}]

sorted(l, key=lambda x: (int(x['month']), int(x['day'])))

[{'day': '1', 'month': '1'},
 {'day': '1', 'month': '2'},
 {'day': '3', 'month': '3'},
 {'day': '2', 'month': '6'}]

推荐阅读