我有一个字符串列表:
[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/