3 回答

TA貢獻(xiàn)1847條經(jīng)驗(yàn) 獲得超7個(gè)贊
使用set有sorted:
l = ['elt9', 'elt19', 'elt1', 'elt2', 'elt3','elt9','elt2']
sorted(set(l), key=lambda x: int(x[3:]))
['elt1', 'elt2', 'elt3', 'elt9', 'elt19']

TA貢獻(xiàn)1850條經(jīng)驗(yàn) 獲得超11個(gè)贊
你可以試試這個(gè):
import re
l= ['elt9', 'elt19', 'elt1', 'elt2', 'elt3','elt9','elt2']
l = sorted(set(l), key = lambda x : int(re.findall(r'\d+', x)[0]))
l
['elt1', 'elt2', 'elt3', 'elt9', 'elt19']
這也適用于任何數(shù)字(3、4 位數(shù)字等),而不僅僅是 2。但需要注意的是,它應(yīng)該只有一個(gè)數(shù)字才能工作。re.findall 查找提供給它的所有模式并返回滿足該模式的列表。模式\d+代表一個(gè)或多個(gè)整數(shù)。

TA貢獻(xiàn)1877條經(jīng)驗(yàn) 獲得超1個(gè)贊
在變量all_combination 中有二維列表/數(shù)組 ([['elt1', 'elt11', 'elt1'], ['elt2', 'elt12', 'elt1'], ['elt3', 'elt13', 'elt1'], ['elt4', 'elt14', 'elt1'], ['elt1', 'elt11', 'elt2'], ...) 并且你正在嘗試這樣做:
l = sorted(set( all_combination ), key = lambda x : int(re.findall(r'\d+', x)[0]))
該部分代碼適用于您在帖子中提到的列表類型:
L1 = ['elt9', 'elt19', 'elt1', 'elt2', 'elt3','elt9','elt2']
l = sorted(set(L1), key = lambda x : int(re.findall(r'\d+', x)[0]))
print (l)
結(jié)果:['elt1'、'elt2'、'elt3'、'elt9'、'elt19']
添加回答
舉報(bào)