중첩 된 파이썬 사전에 대한 XPath 유형 쿼리를 정의하는 방법이 있습니까? 이 같은중첩 된 파이썬 사전에 대한 Xpath와 유사한 쿼리
뭔가 :
foo = {
'spam':'eggs',
'morefoo': {
'bar':'soap',
'morebar': {'bacon' : 'foobar'}
}
}
print(foo.select("/morefoo/morebar"))
>> {'bacon' : 'foobar'}
또한 중첩 된 목록을 선택하는 데 필요한,
이것은 @의 젤리 빈의 솔루션을 쉽게 수행 할 수 있습니다) :
def xpath_get(mydict, path):
elem = mydict
try:
for x in path.strip("/").split("/"):
try:
x = int(x)
elem = elem[x]
except ValueError:
elem = elem.get(x)
except:
pass
return elem
foo = {
'spam':'eggs',
'morefoo': [{
'bar':'soap',
'morebar': {
'bacon' : {
'bla':'balbla'
}
}
},
'bla'
]
}
print xpath_get(foo, "/morefoo/0/morebar/bacon")
[EDIT 2016]이 질문과 대답은 고대다. 새로운 대답은 원래의 대답보다 더 잘할 수 있습니다. 그러나 나는 그 (것)들을 시험하지 않았다 그래서 나는 받아 들여진 응답을 바꾸지 않을 것이다.
왜'foo [ 'morefoo'] [ 'morebar']'를 사용하지 않습니까? – MarcoS
내가 원하는 이유는 다음과 같습니다. def bla (query) : data.select (query) – RickyA
@MarcoS 경로 마이크로 언어가 여러 항목을 반환하는 목록에서 더 재미있을 것입니다. –