Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 是否有可能获得孙辈dict密钥';s值,无需迭代_Python_Xpath - Fatal编程技术网

Python 是否有可能获得孙辈dict密钥';s值,无需迭代

Python 是否有可能获得孙辈dict密钥';s值,无需迭代,python,xpath,Python,Xpath,给定一个dict,其中包含n个字典,其中包含n个字典等 foo = dict({"foo" : {"bar": {"baz": "some value"}}} 假设baz可以位于foo中的任何位置,但它只会出现一次,是否可以不迭代地查找键“baz”的值?我在想点什么。ie“//baz” 我不认为没有迭代/递归就可以做到这一点 >>> def search(d, baz): ... if baz in d: ... return d[baz] ...

给定一个dict,其中包含n个字典,其中包含n个字典等

foo = dict({"foo" : {"bar": {"baz": "some value"}}}
假设
baz
可以位于
foo
中的任何位置,但它只会出现一次,是否可以不迭代地查找键“baz”的值?我在想点什么。ie
“//baz”


我不认为没有迭代/递归就可以做到这一点

>>> def search(d, baz):
...     if baz in d:
...         return d[baz]
...     for value in d.values():
...         if isinstance(value, dict):
...             ret = search(value, baz)
...             if ret:
...                 return ret
...
>>>
>>> foo = {"foo" : {"bar": {"baz": "some value"}}}
>>> search(foo, 'baz')
'some value'
>>> search(foo, 'spam')
>>>

使用标准字典,而不是迭代?否。

不重复,不确定。使用,您可以使用以下各项:

 d = dict({"foo" : {"bar": {"baz": "some value"}}})
 def myprint(d):
   for i in d.iteritems():
     if isinstance(i, dict):
       myprint(i)
     else:
       print i

 myprint(d)

谢谢……我知道在某个地方必须进行迭代,但我希望有一些东西可以隐藏起来,比如xpath在etree中提供的东西
 d = dict({"foo" : {"bar": {"baz": "some value"}}})
 def myprint(d):
   for i in d.iteritems():
     if isinstance(i, dict):
       myprint(i)
     else:
       print i

 myprint(d)