[英]how to sort a list based on a specific keywords in the string
我在下面有這個列表
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']
無論如何,我可以根據最后一個數字部分對列表進行排序嗎?
非常感謝。
您可以使用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.sort(key=lambda s: s.split("-")[2])
這產生:
['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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.