您的尝试是一个列表理解,实际上除了创建一个新列表之外什么也不做。
如果你想对列表进行排序,你必须使用.sort() https://wiki.python.org/moin/HowTo/Sorting#Sorting_Basics.
如果您想以特定方式对列表进行排序,则必须使用.sort()
与key https://wiki.python.org/moin/HowTo/Sorting#Key_Functions争论。
因此,如果您希望前几个月出现在列表中的第一位,请首先创建一个包含这些月份顺序的列表:
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]
gives "Jan"
when x
is "Jan_opi"
, and months.index("Jan")
is 0
所以该元素将排在第一位。
根据您的编辑,如果您想根据两个条件对列表进行排序,您只需使 lambda 函数返回一个元组(排序函数比较两个元素返回的第一个值,如果相同,则返回第二个值)一)。
letters = ['L','K']
final_result = sorted(l, key=lambda x: (letters.index(x.split('_')[1]), months.index(x.split('_')[0])))