TIM*_*MEX 2 python dictionary nested
我有很多嵌套的词典,我试图找到嵌套在某个地方的某个键.
例如,这把钥匙叫做"水果".如何找到此密钥的值?
@Håvard的递归解决方案可能会好起来......除非嵌套级别太高,然后你得到一个RuntimeError: maximum recursion depth exceeded.为了解决这个问题,你可以使用通常的技术进行递归删除:保持自己的一堆项目进行检查(作为一个在你控制之下的列表).即:
def find_key_nonrecursive(adict, key):
stack = [adict]
while stack:
d = stack.pop()
if key in d:
return d[key]
for k, v in d.iteritems():
if isinstance(v, dict):
stack.append(v)
Run Code Online (Sandbox Code Playgroud)
这里的逻辑非常接近递归的答案(除了以dict正确的方式检查;-),明显的例外是递归调用被替换为while循环.pop和.append操作在显式堆栈列表上,stack.