【发布时间】:2021-12-16 13:58:55
【问题描述】:
有人可以帮我写下面的代码吗?
这最初是为了处理 json 文件中的数据,但我已将其转换为使用 json / 字典变量。
现在 get_data_value() 函数正在工作,但我想返回一个包含键和值的单数字典,而不是只返回值。
我只是不确定如何在不破坏递归的情况下转换 item_generator 函数以使其成为可能;我从 stackoverflow 上的示例中找到了这个函数。
def get_data_value(data,data_name):
d = data['test']
print(item_generator(d,data_name))
for _ in item_generator(d,data_name):
return (_)
def item_generator(json_input, lookup_key):
if isinstance(json_input, dict):
for key, value in json_input.items():
if key == lookup_key:
data_single_item = {key:value} # what i want to return
print(data_single_item)
yield value # only value is returned
else:
yield from item_generator(value, lookup_key)
elif isinstance(json_input, list):
for item in json_input:
yield from item_generator(item, lookup_key)
json_data = { "test": [ { "Tier1": [ { "Tier1-Main-Title-1": [ { "title": "main", "example": 400 } ] } ] }, { "Tier2": [] }, { "Tier3": [ { "Example1-Sub1": 44 } ] } ] }
print(get_data_value(json_data,'title'))
【问题讨论】:
-
如果代码完全相同,最好删除外部链接,因为无论如何都不需要:-)
-
另外,
item_generator函数的意义何在?意思是,我们需要使用它吗? -
item_generator 确实是我用来获取值的主要函数,当我在此处的示例中找到它时,这就是它的名称。为了使用它,我创建了 get_data_value() 来设置基本数据并循环获取值。我认为在执行 value = item_generator(d,data_name) 之前我无法获得价值。
标签: python python-3.x dictionary recursion