gpt4 book ai didi

Python递归函数从字典中获取数据

转载 作者:太空宇宙 更新时间:2023-11-03 15:35:45 25 4
gpt4 key购买 nike

我创建了一个递归函数来从字典中获取数据。字典由键组成,每个键都有一个键列表,然后继续。因此,我需要在输入按键时获取扁平化的按键列表。

我的字典:

data = {"p": ["s1", "s2", "s3", "s4"],
"s1": ["s1s1", "s1s2"],
"s2": [],
"s3": [],
"s4": [],
"s1s1": [],
"s1s2": ["s1s2s1"],
"s1s2s1": []
}

我的功能:

def get_data(key):
items = data[key]
if items:
for key in items:
items += get_data(key)
return items

当我调用 get_data("p") 时它返回

['s1', 's2', 's3', 's4', 's1s1', 's1s2', 's1s2s1', 's1s2s1']

但预期的输出是:

['s1', 's2', 's3', 's4', 's1s1', 's1s2', 's1s2s1']

在此先感谢您的帮助...

最佳答案

问题出在这几行-

for key in items:
items += get_data(key)

在这里,您在迭代项目时正在修改项目。所以在最后一次迭代中,您的 items 最终多次获得相同的 key ;您可以添加日志记录语句以查看正在使用哪个键调用 get_data

你想单独获取所有的新item,迭代完成后再更新items -

new_items = []
for key in items:
new_items += get_data(key)
items += new_items

关于Python递归函数从字典中获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54899628/

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