python遍历结构可以是_在Python中遍历层次结构

您会问“在python中应该使用什么数据结构来组织这些组?”在

自顶向下编程的一个关键原则是,在决定了将对该结构执行的操作、它们的相对频率和任何其他标准(例如简单性和内存使用率)之前,您不会决定抽象数据结构的实现。您尚未说明该信息,因此我们无法推荐特定的实现。在

我可以想出很多方法来做你要做的事情:树、列表中的列表、字典中的字典等等。每种方法都有其优缺点。我确实想知道一点。在您的结构中,新子级别上的每个项目都以“01”开头,但“02.01.02:克里斯,皮特”除外,它以“02”开头。这是故意的吗?如果您保持其他明显的编号,这将打开一些更简单的实现。在

在您的评论中添加信息后,我建议您使用嵌套列表。每个数据项都有一个以零结尾的索引序列,结构中的任何其他内容都是一个包含其他数据项和列表的列表。在您的例子中,如果我们让整个结构命名为a,那么项01是a[1][0],项01.01在a[1][1][0],项02.01.02在a[2][1][2][0],依此类推。这种结构允许以后插入更多的项目,因此我们可以轻松地添加项目01.01.01,而不会干扰其他项目。不需要在结构中存储项编号:它们是从结构中数据项的位置直接推断出来的。在

这个实现还允许整个结构有一个数据项,它有一个空的项号,并存储在a[0]中。丢失的数据项可以用None标记,空白项可以是另一个空项,如''。下面是显示示例结构的代码和打印出来的代码。在def print_structure(structure, level=''):

"""Iterate through a heirarchical data structure, printing the data

items with their level numbers"""

for i, item in enumerate(structure):

if i == 0:

# Process each data item appropriately

if item is not None:

print(level + ' : ' + str(item))

else:

new_level = format(i, '02')

if level:

new_level = level + '.' + new_level

print_structure(item, new_level)

a = [None,

['Tony, John, Meredith',

['Alex, Fred, Melissa']],

['Alley, Henry, Natalie',

[None,

['?'],

['Chris, Pete']]],

['Andrew',

['Nancy, Peter, Harold']]]

print_structure(a)

在这个实现中,每个“组”都是一个字符串。我把组'?'放在你说存在一个组的地方,但没有说明它是什么;我把None放在你没有说存在数据项的地方。要修改结构的处理,只需更改注释Process each data item appropriately后的两行。上面代码的打印输出是

^{pr2}$

保存到JSON和从JSON恢复很容易。这应该可以满足您的需要,当然,也可以对结构或代码进行一些修改。在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值