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]