Python 如何基于元素之间的重复子字符串删除字符串列表中的项?
我有一个来自不同路径的文件列表,但其中一些路径包含相同的文件(和文件名) 我想删除这些重复文件,但由于它们来自不同的路径,我无法执行Python 如何基于元素之间的重复子字符串删除字符串列表中的项?,python,Python,我有一个来自不同路径的文件列表,但其中一些路径包含相同的文件(和文件名) 我想删除这些重复文件,但由于它们来自不同的路径,我无法执行set(列表) 最小示例 假设我的列表是这样的 thelist = ['/path1/path2/file13332', '/path11/path21/file21', 'path1232/path1112/file13332', '/path1/path2/file13339'] 什么是最适合的方式来获得这个 deduplicatedList = ['/pat
set(列表)
最小示例
假设我的列表是这样的
thelist = ['/path1/path2/file13332', '/path11/path21/file21', 'path1232/path1112/file13332', '/path1/path2/file13339']
什么是最适合的方式来获得这个
deduplicatedList = ['/path1/path2/file13332', '/path11/path21/file21', '/path1/path2/file13339']
文件file13332在列表中出现了两次。我不关心删除了哪个元素一种方法是使用字典:
thelist=['/path1/path2/file13332','/path11/path21/file21','path1232/path1112/file13332','/path1/path2/file13339']
重复数据消除列表=列表({f.split('/')[-1]:f表示列表中的f}.values()
打印(重复数据消除列表)
s
包含唯一的基名,可防止将非唯一的基名添加到重复数据消除
['path1232/path1112/file13332', '/path11/path21/file21', '/path1/path2/file13339']
s = set()
deduped = [s.add(os.path.basename(i)) or i for i in l if os.path.basename(i) not in s]