我必须根据月份名称对我的字符串列表进行排序:
my_list = ['apple_april', 'banana_july', 'carrot_december', 'dog_january']
我必须按一月、二月、三月排序,......
我的试用:
months = [m.split('_')[1] for m in my_list]
ans = [x for (y,x) in sorted(zip(months,my_list))]
但是没有成功,你会怎么做呢?
预期的答案是:
['dog_january', 'apple_april', 'banana_july', 'carrot_december']
最佳答案
list.sort
, sorted
接受可选的 key
参数。将返回相应数字的关键函数传递给 monthes。
>>> import calendar
>>>
>>> months = {calendar.month_name[i].lower(): i for i in range(1, 12+1)}
>>> my_list = ['apple_april', 'banana_july', 'carrot_december', 'dog_january']
>>> sorted(my_list, key=lambda x: months[x.split('_')[1]])
['dog_january', 'apple_april', 'banana_july', 'carrot_december']
months
使用 calendar.month_name
在月份名称和数字之间进行映射:
>>> months
{'april': 4, 'november': 11, 'june': 6, 'august': 8, 'december': 12, 'october': 10,
'july': 7, 'march': 3, 'september':9, 'may': 5, 'january': 1, 'february': 2}
关于python - 使用列表中包含的特定字符串对一个列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27588432/