求助 Python 如何获取举例的数据结构?

data = [
    '/一级目录/1二级目录/三级目录1/四级目录1',
    '/一级目录/1二级目录/三级目录1/四级目录2',
    '/一级目录/1二级目录/三级目录2',
    '/一级目录/1二级目录/三级目录3',
    '/一级目录/2二级目录/三级目录1',
    '/一级目录/2二级目录/三级目录2/四级目录1',
    '/一级目录/3二级目录'
]

# 最终我想获取
data1 = ['1二级目录', '2二级目录', '3二级目录']
data2 = [['三级目录1', '三级目录2', '三级目录3'], ['三级目录1', '三级目录2'], ['']]

data1 我已解决了
求助 data2这样的数据如何获取 跪谢

阅读 1.2k
2 个回答

我猜你是根据字符串split来处理的吧,用/进行分割就可以获取数据啦,这个其实是一个分层的关系。可以方便的构造出一个树形结构。
如果能明确最多有多少层,其实更方便处理,当然不明确也无所谓的。

data = [
    '/一级目录/1二级目录/三级目录1/四级目录1',
    '/一级目录/1二级目录/三级目录1/四级目录2',
    '/一级目录/1二级目录/三级目录2',
    '/一级目录/1二级目录/三级目录3',
    '/一级目录/2二级目录/三级目录1',
    '/一级目录/2二级目录/三级目录2/四级目录1',
    '/一级目录/3二级目录'
]

rt={}
for  s in  data:
    tOs=s.split("/")
    tOs=tOs[1:] # 因为第一个是空字符,所以舍弃
    print(tOs)
    c=rt
    for i in range(len(tOs)):
        if not ( tOs[i] in  c.keys() ):
                c[tOs[i]]={}
        c=c[tOs[i]]

data1=list(rt['一级目录'].keys())
data2=[list(rt['一级目录'][x].keys()) for x in rt['一级目录'].keys()]

print(data1)
print(data2)

已参与了 SegmentFault 思否社区 10 周年「问答」打卡 ,欢迎正在阅读的你也加入。
data = [
    '/一级目录/1二级目录/三级目录1/四级目录1',
    '/一级目录/1二级目录/三级目录1/四级目录2',
    '/一级目录/1二级目录/三级目录2',
    '/一级目录/1二级目录/三级目录3',
    '/一级目录/2二级目录/三级目录1',
    '/一级目录/2二级目录/三级目录2/四级目录1',
    '/一级目录/3二级目录'
]

groups = {}
for path in data:
    dirs = path.split('/')
    if len(dirs) > 2:
        group = groups.setdefault(dirs[2], {})
        if len(dirs) > 3:
            group[dirs[3]] = None

data1, data2 = zip(*((k, (*v.keys(),)) for k, v in groups.items()))
print(data1)  # ('1二级目录', '2二级目录', '3二级目录')
print(data2)  # (('三级目录1', '三级目录2', '三级目录3'), ('三级目录1', '三级目录2'), ())
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题