如何按字符串的一部分对字符串列表进行排序

2024-09-29 02:24:50 发布

您现在位置:Python中文网/ 问答频道 /正文

string =["age 12, city1, 10",
           "age 0, city4, 2",
           "age 16, city3, 8",
           "age 9, city2, 1",
           ]

我需要根据他们的年龄对名单进行排序


Tags: agestring排序年龄名单city1city2city3
3条回答

您可以使用regex

import re
...
string.sort(key=lambda x: int(re.findall(r'(\d+)',re.findall(r'age (\d+)',x)[0])[0]))

或通过:

string.sort(key=lambda x: int(re.findall(r'age (\d+)',x.split(',')[0])[0]))

两种输出:

['age 0, city4, 2', 'age 9, city2, 1', 'age 12, city1, 10', 'age 16, city3, 8']

使用lambda函数

年龄编号始终从第5个字符开始,并且,是终止字符。提取该数字并对其进行排序

string.sort(key=lambda x: int(x[4:x.index(',')]))
print(string)

['age 0, city4, 2', 'age 9, city2, 1', 'age 12, city1, 10', 'age 16, city3, 8']

您可以将lambda函数传递给sorted内置函数的key参数。在lambda函数中,精确拆分,上的值一次,然后取第一个值,在空间上再次拆分,然后取最后一个值,将其转换为int

>>> sorted(string, key=lambda x: int(x.split(',', maxsplit=1)[0].split(' ')[-1]))

['age 0, city4, 2', 'age 9, city2, 1', 'age 12, city1, 10', 'age 16, city3, 8']

相关问题 更多 >