根据给定的月份文本对列表进行排序

时间:2015-11-17 22:04:33

标签: python

如何根据月份l['Jan', 'Feb', 'Mar']对给定列表['L', 'K']进行排序:

l = ['Jan_K', 'Mar_K', 'Feb_L']

预期结果应为:

result = ['Feb_L', 'Jan_K', 'Mar_K']

1 个答案:

答案 0 :(得分:2)

你的尝试是一种列表理解,除了创建一个新列表之外别无其他。

如果要对列表进行排序,请使用.sort()

如果要以特定方式对列表进行排序,则必须将.sort()key参数一起使用。

因此,如果您希望列表中的前几个月排在第一位,请首先创建一个包含这些月份顺序的列表:

months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]

然后,您可以使用key和lambda函数,如下所示:

l.sort(key=lambda x: months.index(x.split('_')[0]))

例如,x.split('_')[0]"Jan"x时提供"Jan_opi"months.index("Jan")0,因此该元素将首先出现。< / p>

根据你的编辑,如果你想根据两个标准对列表进行排序,你只需要让lambda函数返回一个元组(排序函数比较两个元素返回的第一个值,如果是相同的话)然后第二个)。

letters = ['L','K']
final_result = sorted(l, key=lambda x: (letters.index(x.split('_')[1]), months.index(x.split('_')[0])))