python 分类树_python中列表的分类树实现

这篇博客探讨了如何在Python中实现无限深度的目录树结构,通过将嵌套列表转换为嵌套字典,然后用递归函数展示树形结构。作者遇到的问题是无法在输出中保留子元素与父元素的链接。文章提到了两个步骤:1) 将列表转为字典,2) 使用递归函数以特定格式显示目录树。然而,当前的代码存在缺陷,没有正确地链接子类别。博主寻求建议或代码改进,以便创建带锚点标签的格式化类别树。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我试图在Python中实现具有无限深度子类别的目录树,我有多个列表元素,我必须从这些元素中进行创建。在

让我详细解释一下,这是我的清单。在>mylists = [

>['home', 'desktop', 'mouse', 'wireless'],

>['home', 'desktop', 'mouse', 'wired'],

>['home', 'laptop', 'mouse'],

>['home', 'laptop', '13-inch'],

>]

我希望输出是:

^{pr2}$

我知道我应该使用递归函数来迭代列表,并使一些东西变魔术。在

为此,我分两步来完成这项任务:

1将这个嵌套列表转换成嵌套字典(只是为了保持层次结构)

2将嵌套dict转换为上面解释的所需格式。在

步骤1:以下是我将嵌套列表转换为嵌套dict的代码:>def make_rec_dict(dict):

> d = {}

> for path in dict:

> current_level = d

> for part in path:

> if part not in current_level:

> current_level[part] = {}

> current_level = current_level[part]

> #print part

> return d

>

>make_rec_dict(mylists)

>{'home': {'laptop': {'mouse': {}, '13-inch': {}}, 'desktop': {'mouse': {'wireless': {}, 'wired': {}}}}}

第2步:

以所需格式显示spaces = { 1 : '', 2 : '>>>>', 3 : '>>>>>>>>', 4 : '>>>>>>>>>>>>', 5 : '>>>>>>>>>>>>>>>>>>>>'}

def display_recusively(dictionary, level=0):

if type(dictionary) is dict:

values = [] # get all the values and parse each again

for key, value in dictionary.iteritems():

if value != '':

print spaces[level], key

values.append(value)

level = level + 1

return display_recusively(values, level)

elif value == '': # this is the last child

print spaces[level], key

elif type(dictionary) is list:

for d in dictionary:

return display_recusively(d, level)

else:

print dictionary

但该代码的缺点是,我无法获取子元素相对于父元素的链接。我的意思是鼠标和鼠标应该是不同的,上面代码的缺点是它脱离了循环。。在

因此,请向我建议或纠正我实现以下目标的更好方法:1.带深度级别的格式化类别树

2.构件应带有制作锚定标签的母材(如最后一段所述)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值