如何根据字符串中的特定关键字对列表进行排序

2024-04-29 04:25:42 发布

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

我有下面的清单

my_list = ['STNNC-A11-SD03', 'STNNC-BDD-SD01', 'STNNC-BDD-SD04', 'STNNC-BDB-SD02']

我尝试了下面的方法,这是它返回的结果,因为它是从左到右排序的:

my_list.sort()
print(my_list)

['STNNC-A11-SD03', 'STNNC-BDB-SD02', 'STNNC-BDD-SD01', 'STNNC-BDD-SD04']

但下面是我正在寻找的输出

['STNNC-BDD-SD01', 'STNNC-BDB-SD02', 'STNNC-A11-SD03', 'STNNC-BDD-SD04']

我是否可以根据最后一个数字部分对列表进行排序

非常感谢


Tags: 方法排序my数字sortbddlistprint
3条回答

您可以使用sorted()并从字符串中提取数字,将数字用作sorted中的键

res = sorted(my_list, key=lambda x: int(x.split('-SD')[-1]))
print(res)

输出:

['STNNC-BDD-SD01', 'STNNC-BDB-SD02', 'STNNC-A11-SD03', 'STNNC-BDD-SD04']

你可以试试这个,我希望你能找到解决办法

my_list = ['STNNC-A11-SD03', 'STNNC-BDD-SD01', 'STNNC-BDD-SD04', 'STNNC-BDB-SD02']

base_list = []
for i in my_list:
    base_list.append(int(i[-2:]))

zipped_lists = zip(base_list, my_list)

sorted_zipped_lists = sorted(zipped_lists)

sorted_list = [element for _, element in sorted_zipped_lists]

print(sorted_list)

如果只想根据每个字符串的第三个组成部分进行排序,可以使用:

my_list.sort(key=lambda s: s.split("-")[2])

这将产生:

['STNNC-BDD-SD01', 'STNNC-BDB-SD02', 'STNNC-A11-SD03', 'STNNC-BDD-SD04']

相关问题 更多 >