我最近不得不用嵌套的字典/列表组合解决实际数据系统中的问题.我在这方面工作了很长一段时间并提出了一个解决方案,但我非常不满意.我不得不求助于使用globals()和命名的临时全局参数.
我不喜欢使用全局变量.这只是要求注射漏洞.我觉得必须有更好的方法来执行这项任务而不诉诸全局变量.
问题数据集:
d = {
"k":1,
"stuff":"s1",
"l":{"m":[
{
"k":2,
"stuff":"s2",
"l":None
},
{
"k":3,
"stuff":"s3",
"l":{"m":[
{
"k":4,
"stuff":"s4",
"l":None
},
{
"k":5,
"stuff":"s5",
"l":{"m":[
{
"k":6,
"stuff":"s6",
"l":None
},
]}
},
]}
},
]}
}
Run Code Online (Sandbox Code Playgroud)
期望的输出:
[{'k': 1, 'stuff': 's1'},
{'k': 2, 'stuff': 's2'},
{'k': 3, 'stuff': 's3'},
{'k': 4, 'stuff': 's4'},
{'k': 5, 'stuff': 's5'},
{'k': 6, 'stuff': 's6'}]
Run Code Online (Sandbox Code Playgroud)
我的解决方案
def _get_recursive_results(d, iter_key, get_keys):
if not 'h' in globals():
global h
h = [] …Run Code Online (Sandbox Code Playgroud)