gpt4 book ai didi

python - 递归遍历 Python 列表的子项

转载 作者:行者123 更新时间:2023-11-28 22:54:14 26 4
gpt4 key购买 nike

我尝试从嵌套的列表列表中递归打印句子

我想获取一个包含

的列表

['大坏狗', '大毛茸茸的猫', '蓝色快乐小马', '小 Frog ']

这是我的代码,它不起作用...

我走的路是否正确,或者我应该以另一种方式构建我的数据以实现我的目标?

from pprint import pprint

dirs = [

{
'kw': 'big',
'childs': [
{
'kw': 'bad',
'childs': [
{
'kw': 'dog'
}
]
},
{
'kw': 'fluffy',
'childs': [
{
'kw': 'cat'
}
]
}

]
},

{
'kw': 'small',
'childs': [
{
'kw': 'blue',
'childs': [
{

'kw': 'happy',
'childs': [
{
'kw': 'pony'

}

]
}
]
},
{
'kw': 'frog'

}

]
},
]


def traverse(d, l):

kw = d.get('kw')
c = d.get('childs')
l.append(kw)
if c:
for cc in c:
l = traverse(cc, l)



return l


r = traverse(dirs[0], [])

pprint(r)

最佳答案

像往常一样,生成器可以很好地处理递归结构

def traverse(i):
for d in i:
childs = d.get('childs')
for j in traverse(childs) if childs else ['']:
yield d['kw']+' '+j

res = list(traverse(dirs))

在Python3.3中,这变成了

def traverse(i):
for d in i:
c = d.get('childs')
yield from (d['kw']+' '+j for j in (traverse(c) if c else ['']))

关于python - 递归遍历 Python 列表的子项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18265961/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com