ネストされたpython辞書のXPath型クエリを定義する方法はありますか?ネストされたpython辞書のXpathのようなクエリ
このような何か:
foo = {
'spam':'eggs',
'morefoo': {
'bar':'soap',
'morebar': {'bacon' : 'foobar'}
}
}
print(foo.select("/morefoo/morebar"))
>> {'bacon' : 'foobar'}
私もネストされたリストを選択するために必要;)
これは、@のjellybeanの溶液を用いて簡単に行うことができます。
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パスマイクロ言語が複数の項目を返すリストでは、もっと面白いでしょう。 –