我承认我不知道如何给这个问题一个更好的标题。 :-(任何人对标题有更好的想法?
这是我的问题:
我想对此列表进行排序:
a = ['at10', 'at11', 'at12', 'at13', 'at9', 'at1', 'at8']
列表中的每个项目都以两个字母开头,并且有一些数字。
期望的结果如下。该列表按数字排序。
['at1', 'at8', 'at9', 'at10', 'at11', 'at12', 'at13']
我尝试使用sorted(a)
及其许多key
设置。但我无法得到结果。有人请帮帮我吗?提前致谢!
答案 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)