python - 使用列表中包含的特定字符串对一个列表进行排序

标签 python list sorting

我必须根据月份名称对我的字符串列表进行排序:

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/

相关文章:

python - 什么是解析基于位的错误代码的可读/现代方法?

python - 如何在 Notepad++ 中执行 Python 脚本?

sorting - lucene.net,文档提升不起作用

sorting - Altair Color 正在覆盖/删除排序顺序

python - 将函数列表应用于单个变量

Python - 创建新实例时如何处理错误参数?

python - 在列表中查找重复子串

java - 由 HashSet 备份的列表

c# - 在 linq to sql 中使用 Select New List<> 时所有元素的列表的相同实例

c# - 通用列表的动态排序标准