如何从特定字母开始按字母顺序组织字符串列表?

How can I organize a list of strings alphabetically starting on a specific letter?

例如,如果我有:

x = ['5 Gabriela', '4 Isabel', '1 Daniel', '1 Gabriel']

我希望我的输出列表按名称而不是数字组织:

output_list = ['1 Daniel', '1 Gabriel', '5 Gabriela', '4 Isabel']

我尝试做一些切片,但我的输出列表没有数字:

names = []
for k in range (0, len(sum_sor)):
    start = x[k][2::]
    names.append(start)
    y = sorted(names)
print(y)

输出: y = ['Daniel', 'Gabriel', 'Gabriela', 'Ixchelle']

使用 sortedkey 作为 lambda 返回 x

的每个元素的名称

sorted(x, key=lambda y: y.split()[1])

这里有另外两种方法,使用正则表达式和 sorted 函数。

以下将首先从字符串中删除数字,并根据无数字版本对 x 中的元素进行排序。

sorted(x, key=lambda y: re.sub("\d+", "", y))

这将首先查找一系列非数字字符,然后根据该序列对 x 中的元素进行排序。

sorted(x, key=lambda y: re.search("\D+", y).group())

我是 python 的新手,但我会创建一个函数来获取第三个字母。假设每个人都有这样的方式:

def get_letter(sample_string):
    return sample_string[2]

现在我们可以使用这个函数作为键对列表进行排序:

x = ['5 Gabriela', '4 Isabel', '1 Daniel', '1 Gabriel']
output_list = sorted(x,key=get_letter)

希望对你有所帮助,祝你好运!