路径样式化输出

题目大意:

    有n条linux系统的文件夹或者文件路径信息,要求按照字典升序(大小写敏感)整理出树状目录结果,不同层次目录相差2个空格的缩进。同一目录下保证文件夹不重名,以‘/’结尾为文件夹路径,否则为文件路径。

输入:

    第一个输入:路径信息条数num

    接下来num行为路径信息信息

输出:

    按字典升序输出树状目录

样例1样例2
【输入】:
5
usr/local/lib64
GAMES
usr/DRIVERS
home
var/log/
​
【输出】:
GAMES
home
usr
  DRIVERS
  local
    lib64
var
  log
【输入】:
7
Root/A
drv
root/b/
Root/
root1/a
root2/a
root1/b
​
【输出】:
Root
  A
drv
root
  b
root1
  a
  b
root2
  a

def type_dict(path,path_dict):
    #将多个路径按字典进行递归分级存储,添加到字典中
    if path:
        cur_path=path[0]
        if cur_path not in path_dict:
            path_dict[cur_path]={}
        type_dict(path[1:],path_dict[cur_path])

def type_dict_gen(path,path_type_list,tab_num):
    #按字典序逐层遍历,添加到列表中
    for key,value in sorted(path.items(),key=lambda x:x[0]):
        key=" "*tab_num+key
        path_type_list.append(key)
        if value:
            type_dict_gen(value,path_type_list,tab_num+2)


def data_type_generate():
    path_type = {}
    n=int(input())
    for i in range(n):
        path = input().strip("/")
        path=path.split("/")
        type_dict(path=path,path_dict=path_type)
    path_type_list=[]
    type_dict_gen(path_type,path_type_list,tab_num=0)
    return '\n'.join(path_type_list)
print(data_type_generate())

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值