python basic:如何仅通过考虑数字来对列表进行排序?

时间:2018-02-10 10:55:29

标签: python sorting

我承认我不知道如何给这个问题一个更好的标题。 :-(任何人对标题有更好的想法?

这是我的问题:

我想对此列表进行排序:

a = ['at10', 'at11', 'at12', 'at13', 'at9', 'at1', 'at8']

列表中的每个项目都以两个字母开头,并且有一些数字。

期望的结果如下。该列表按数字排序。

['at1', 'at8', 'at9', 'at10', 'at11', 'at12', 'at13']

我尝试使用sorted(a)及其许多key设置。但我无法得到结果。有人请帮帮我吗?提前致谢!

2 个答案:

答案 0 :(得分:3)

sorted(a, key=lambda x:int(x[2:]))
#['at1', 'at8', 'at9', 'at10', 'at11', 'at12', 'at13']

答案 1 :(得分:2)

由于您的数据有一个模式(从上面的索引2开始是一个数字),您可以通过在下面定义类似getnum(这是单向)函数来获取每个数字。

在此之后,您可以根据这些值使用sorted函数(按字符串中的数字排序)。

a = ['at10', 'at11', 'at12', 'at13', 'at9', 'at1', 'at8']

def getnum(s):
    num = int(s[2:]);
    return num

b=sorted(a, key = getnum)
print(b)