【发布时间】:2022-10-13 22:24:04
【问题描述】:
以下是示例输入数据(实际数据可能比此处显示的级别更多,因此该解决方案应适用于任意深度):
['/SKA_20-VA-001/SKA_20-V-0546',
'/SKA_20-VA-001/SKA_20-V-0148',
'/SKA_20-VA-001/SKA_20-LT-0028A/SKA_20-LI-0028A',
'/SKA_20-VA-001/SKA_20-LT-0028A/SKA_20-LI-0028B',
'/SKA_20-VA-001/SKA_20-PT-0034/SKA_20-PI-0034',
'/SKA_20-VA-001/SKA_20-V-0685',
'/SKA_20-VA-001/SKA_20-V-0551']
我想把它变成一个嵌套字典来存储路径的层次结构,其中每个父目录都成为一个 dict 键,所有文件都成为列表中的元素。
期望的结果
{
"SKA_20-VA-001": [
"SKA_20-V-0546",
"SKA_20-V-0148",
"SKA_20-V-0685",
"SKA_20-V-0551",
{"SKA_20-LT-0028A": ["SKA_20-LI-0028A", "SKA_20-LI-0028B"]},
{"SKA_20-PT-0034": ["SKA_20-PI-0034"]}
]
}
我遇到过this 的答案,但它并没有真正解决我的问题。或者我无法正确修改它。
【问题讨论】:
-
您可以使用您提到的另一个线程中的方法,然后为仅包含一个元素的条目折叠字典。
-
由于使用了 defaultdict 和
marcher,我很难理解其他代码。一个代码示例将不胜感激! -
您确定您想要的输出实际上是正确的吗?您对列表和字典的使用似乎非常不一致。
-
让我仔细检查一下我是否犯了错误(编辑:更新了预期的结果)。我希望所有文件都存在于列表中,并且所有目录都是键。如果有更好的方式来表示层次结构,那么我对此持开放态度。