如何从特定字母开始按字母顺序组织字符串列表?
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']
使用 sorted
,key
作为 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)
希望对你有所帮助,祝你好运!
例如,如果我有:
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']
使用 sorted
,key
作为 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)
希望对你有所帮助,祝你好运!