3 回答
TA贡献1847条经验 获得超7个赞
使用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贡献1850条经验 获得超11个赞
你可以试试这个:
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']
这也适用于任何数字(3、4 位数字等),而不仅仅是 2。但需要注意的是,它应该只有一个数字才能工作。re.findall 查找提供给它的所有模式并返回满足该模式的列表。模式\d+代表一个或多个整数。
TA贡献1877条经验 获得超1个赞
在变量all_combination 中有二维列表/数组 ([['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)
结果:['elt1'、'elt2'、'elt3'、'elt9'、'elt19']
添加回答
举报