Groovy列表交集求解:目录列表与带路径文件名列表匹配
找出目录列表与文件路径列表的交集
我有一个目录列表:
[dir1,dir2/dir3,dir4,dir7]
还有一个带完整路径的文件名列表:
[dir1/file1.txt,dir8/file2.ext,dir4/dir5/dir6/file4.ext, dir2/dir3/file4.ext]
需要找出第一个列表中,是第二个列表里某个文件的上级目录的项,预期结果:
[dir1,dir4,dir2/dir3]
实现思路
遍历目录列表中的每一项,通过在目录后添加斜杠构造匹配前缀(避免部分字符串匹配的误判,比如防止"dir"误匹配"dir1"),检查是否存在文件列表中的某个文件路径以此前缀开头,符合条件的目录即为交集项。
Python 代码示例
# 输入列表 dir_list = ["dir1", "dir2/dir3", "dir4", "dir7"] file_list = ["dir1/file1.txt", "dir8/file2.ext", "dir4/dir5/dir6/file4.ext", "dir2/dir3/file4.ext"] # 筛选符合条件的目录 intersection = [] for directory in dir_list: match_prefix = f"{directory}/" # 检查是否有文件以该目录为前缀 for file_path in file_list: if file_path.startswith(match_prefix): intersection.append(directory) break print(intersection) # 输出结果: ['dir1', 'dir2/dir3', 'dir4']
内容的提问来源于stack exchange,提问作者rismoney
相关产品推荐
相关产品推荐

