从字母数字文件名列表中删除重复项

2024-03-28 12:32:36 发布

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

我有一个字母数字文件名列表,如下所示:

['build999.100', 'build999.0', 'buil998.100', 
 'build997.100', 'build996.100', 'build996.0']

我想得到一个列表,删除后缀post“.”的重复项,也就是说,我希望我的列表是

['build999.100', 'buil998.100', 'build997.100', 'build996.100']

'.'之后的后缀无关紧要,我只需要在999, 998等的基础上删除重复项

我正在寻找Python或Unix的实现


Tags: 列表文件名字母unix数字post后缀基础
2条回答

简单的&;要做到这一点,有效的方法是使用字典,前缀作为键,因为dict的键是唯一的

data = ['build999.100', 'build999.0', 'buil998.100', 'build997.100', 'build996.100', 'build996.0']
d = {s.split('.')[0]: s for s in data}
out = list(d.values())

使用正则表达式:

import re
a = ['build999.100', 'build999.0', 'buil998.100', 
    'build997.100', 'build996.100', 'build996.0']
list(set(map(lambda x: re.sub(r'\..*$', '.100', x), a)))

或者

list(set([re.sub(r'\..*$', '.100', x) for x in a]))

结果是

>> ['build996.100', 'build999.100', 'buil998.100', 'build997.100']

相关问题 更多 >