【发布时间】:2012-12-14 09:32:13
【问题描述】:
这是我的问题:
我已成功将行缩进级别的文本文件解析为如下列表:
A = [[1,'a'],[1,'b'],[2,'c'],[2,'d'],[1,'e'],[2,'f']]
列表A 中的每个元素都是长度为2 的列表。每个元素对应于从文本文件中读取的一行。 A[x][0] 是文本文件中该行的indent level,A[x][1] 是该行的内容,其中x 是A 中任何元素的索引。
例如A[1] = [1,'b'] 其中1 是缩进级别,'b' 是行文本。
A[2] 和 A[3] 是 A[1] 的子级,即子缩进行。
我正在尝试获取以下格式的输出列表:
B = [['a'],['b',['c','d']],['e',['f']]]
这样,当我遍历 B[x][0] 时,我将只获得第一级缩进项,并且能够递归地转到每个元素。
该算法应该能够处理无限深度,即如果 A[3] 后跟元素 [3,'z'] 它应该是 A[3] 的嵌套列表。
我探索了一些解决类似问题的其他帖子并使用itertools.groupby,但遗憾的是无法充分理解它们,无法将其应用于我的问题。
非常感谢您的帮助!
【问题讨论】:
-
为什么
'b'在子列表中,尽管它与'a'处于同一级别?那么为什么'd'不在它自己的子列表中呢?你能澄清一下规则吗? -
-a -b --c --d -e --f 所以 c 和 d 与 b 相关,f 与 e 相关。根列表将只包含来自级别 1 的元素,即 a、b 和 e,但由于 b 和 e 有子节点,如果将 bi 作为根列表的元素添加,则与子节点的关系将丢失
-
不会丢失:在
['a', 'b', ['c', 'd'], 'e', ['f']]中,每个子列表都与前一个元素“相关”。
标签: python list recursion tree nested