Python 如何将文件路径列表进行归类?

2020-08-27 16:13:04 +08:00
 coolair
list_a = ['/usr/bin/a.sh', '/usr/bin/b.sh', '/usr/c.sh', '/usr/d.sh', '/bin/a.sh', '/bin/b.sh', '/bin/test/a.sh', '/bin/test/c.sh']

===>

result = [['/usr/bin/a.sh', '/usr/bin/b.sh'], [ '/usr/c.sh', '/usr/d.sh'], ['/bin/a.sh', '/bin/b.sh'], ['/bin/test/a.sh', '/bin/test/c.sh']]

也就是把目录相同的文件路径归到一个子列表中,如何操作更高效啊,谢谢。

691 次点击
所在节点    问与答
5 条回复
imn1
2020-08-27 16:22:02 +08:00
先订层级
/相同 15 层 /a
/相同 15 层 /b/a
这两个算一类还是两类?
BBrother
2020-08-27 16:27:14 +08:00
根据"/"切分,切出来的每一部分都是一个节点,以类似 trie 的思路建树,所有非叶子节点就是你要的子目录
ungrown
2020-08-27 16:29:57 +08:00
路径所有 part 全部割开,然后迭代放入多层级的字典
coolair
2020-08-27 16:30:12 +08:00
@imn1 #1 两类
imn1
2020-08-27 16:33:17 +08:00
如果只计算 basename 和 dirname 就简单
dirs = {dirname(x) for x in list_a}
result = [[x for x in list_a if x.startswith(y+'/')] for y in dirs]

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/701939

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX