python - 按整数后缀对字符串列表进行排序

标签 python

我有一个字符串列表:

[song_1, song_3, song_15, song_16, song_4, song_8]

我想在末尾按 # 对它们进行排序,不幸的是,由于较低的数字不是“08”而是“8”,因此它们在字典顺序中被视为大于 15。

我知道我必须将一个键传递给排序函数,我在这个网站的某个地方看到了这个来对字符串形式的十进制数字进行排序:

sorted(the_list, key=lambda a:map(int,a.split('.'))

但那是针对“1.2、2.5、2.3”的,但我没有那种情况。我想替换“。”与 '_' 但据我了解,它将双方都转换为 int,这将失败,因为 _ 的左侧是一个字符串。

编辑:我忘了提到所有前缀都是相同的(本例中为歌曲)

最佳答案

你很接近。

sorted(the_list, key = lambda x: int(x.split("_")[1]))

应该这样做。这将在下划线处拆分,获取第二部分(即第一个下划线之后的部分),并将其转换为整数以用作键。

关于python - 按整数后缀对字符串列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4287209/

相关文章:

python - 可移植 Python(Mac -> Windows)

python - 在A列表中搜索一个元素的索引,如果没有找到,让用户知道

python - 索引错误 : Replacement index 1 out of range for positional args tuple

Python3 : Changing inheritance

Python Yandex 翻译示例

python - python2.7和python 3.4中的ord函数有什么不同?

Python shutil.rmtree : cannot remove git dir on win7

python - 如何使用 python zipfile 库检查 zip 文件是否拆分为多个存档?

python - 手动更新 conda 中的 channel 优先级

python - 如何在没有 gcc 错误的情况下安装 matplotlib?