簡體   English   中英

如何根據字符串中的特定關鍵字對列表進行排序

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM