我已经从reddit commments部分解析了一些JSON数据。我试图将评论结构表示为作出评论的作者的嵌套列表(树)。我的输入数据看起来像这样:
[u'a1',
[u'a2',
[u'a1', [u'a2']],
u'a3',
[u'a1']],
u'a4',
[u'a5']]
在此示例中,a1和a4是原始父帖子的子节点。 a1有两个与之相关的孩子,a2和a3。 a4只有一个子节点(一个响应)。我相信我真正想要的结构应该是这样的:
[[u'a1',
[u'a2',
[u'a1', [u'a2']]],
[u'a3',
[u'a1']]],
[u'a4',
[u'a5']]]
以下是关于如何重新格式化第一项的重点:
[u'a1',
[u'a2',
[u'a1', [u'a2']]],
[u'a3',
[u'a1']]]
我很丢失,但我有类似的东西在父节点正下方的水平面重新格式化树:
[tree[i:i+2] for i in range(0,len(tree),2)]
我需要这样的东西,它可以递归地工作,并且可以处理父项的任意数量的子节点。我被困了。
由于
答案 0 :(得分:0)
问题:我需要这样一些可以递归工作的东西
例如,对list
list
的嵌套_list = [[u'a1',
[u'a2',
[u'a1', [u'a2']]],
[u'a3',
[u'a1']]],
[u'a4',
[u'a5']]]
def scan(_list, l=-1, i=-1):
if isinstance(_list, list):
print('list {}:{}'.format((l,i), _list))
l += 1
for i, item in enumerate(_list):
scan(item, l, i)
if __name__ == '__main__':
scan(_list)
print('3,1:{}'.format(_list[0][1][1][1]))
进行递归迭代:
list (-1, -1):[['a1', ['a2', ['a1', ['a2']]], ['a3', ['a1']]], ['a4', ['a5']]]
list (0, 0):['a1', ['a2', ['a1', ['a2']]], ['a3', ['a1']]]
list (1, 1):['a2', ['a1', ['a2']]]
list (2, 1):['a1', ['a2']]
list (3, 1):['a2']
list (1, 2):['a3', ['a1']]
list (2, 1):['a1']
list (0, 1):['a4', ['a5']]
list (1, 1):['a5']
3,1:['a2']
输出:
{{1}}
使用Python测试:3.4.2