python - 如何根据其中的数字对字符串列表进行排序?
问题描述
我的问题真的很奇怪。我必须对列表进行排序,例如:
list1=["S01E01","S02E010", "S02E013", "S02E02", "S02E03"]
我想要这样的结果:
list1=["S01E01","S02E02", "S02E03", "S02E010", "S02E013"]
我使用了sort()
, sorted()
,map()
方法,但这些方法无法对这个列表进行排序,因为它已经排序。如果您在 python 控制台中键入 "010">"02" ,它将返回false。
请建议我以任何方式调试此问题。
解决方案
为此,您需要使用一个键函数将字符串拆分为组件并将它们作为元组返回。如果您希望以数字方式考虑其值,则任何作为数字的子字符串都应转换为整数,否则它将按字典顺序(按字母顺序)。
根据样本数据,我认为这样做是这样的:
def keyfunc(s):
return s[0], int(s[1:3]), s[3], int(s[4:])
list1 = ["S01E01","S02E010", "S02E013", "S02E02", "S02E03"]
result = sorted(list1, key=keyfunc)
print(result) # -> ['S01E01', 'S02E02', 'S02E03', 'S02E010', 'S02E013']
推荐阅读
- python - 使用拆分字符串命名文件
- python - STFT 和 DWT 输入数据的深度学习参数
- uipath - UiPath Orchestrator 机器人未在作业中显示
- sql - “文本”附近的语法不正确
- java - 使用 Java8 Stream 迭代 java 嵌套列表
- machine-learning - 谁能在下面给定的 CNN 模型代码中找到神经元的数量和内核大小?我想在图表中显示层内的每个神经元
- python-3.x - 我不知道我在脚本中的错在哪里(python3)
- javascript - 从 javascript 中的 JSP 访问 java 对象
- c# - 调用隐藏接口方法
- go - 如何设计一个在另一个对等点上调用相同的链代码?