【发布时间】:2015-11-18 22:09:56
【问题描述】:
我有一个字符串列表,需要使用两个子字符串作为 int 键按数字顺序排序。
显然使用 sort() 函数按字母顺序排列我的字符串,所以我得到 1,10,2... 这显然不是我想要的。
四处搜索我发现一个关键参数可以传递给sort() 函数,使用sort(key=int) 应该可以解决问题,但是作为我的关键子字符串而不是整个字符串会导致转换错误。
假设我的字符串是这样的:
test1txtfgf10
test1txtfgg2
test2txffdt3
test2txtsdsd1
我希望我的列表根据第一个整数和第二个整数按数字顺序排序,所以我会:
test1txtfgg2
test1txtfgf10
test2txtsdsd1
test2txffdt3
我想我可以提取整数值,只对它们进行排序,跟踪它们属于哪个字符串,然后对字符串进行排序,但我想知道是否有一种方法可以更高效、更优雅地完成这件事。
提前致谢
【问题讨论】:
-
Python 2 还是 3?我问的原因是 Python 2 有一个
cmp参数。 -
虽然您可以自己编写此代码,但您可能希望查看 PyPI 上一些非常好的“自然排序”库。除了更容易之外,他们还可能想到了您没有想到的边缘情况,或者以您不会费心的方式优化事物等等。