XPath で dict:辞書を参照

区切り文字 '/' で表現するXPathdict:辞書を参照するものを作りました。
jsonpath-ng · PyPI ではありません。

XPath の書式で配列の何番目かの指定をするインデックス [n] を単独で区切る場合、、
 /key/key/[0]
と書くのが正しいのか?
それとも
 /key/key[0]
が正しいのか?、わからなくなってしまいましたが、後者を採用することにして、
以下、クラスの staticメソッドとして用意しました。

dicttools.py

# -*- coding: UTF-8 -*-
import re
class dictXpath():
    @staticmethod
    def get(dct, path):
        p = path.replace('[', '/[') if re.match(r'^.+\[[0-9]+.+', path) else path
        return dictXpath._get(dct, p)
    @classmethod
    def _get(self, _dct, _path):
        pl = _path.strip('/').split('/')
        if re.match(r'^\[[0-9]+\]$', pl[0]):
            i = int(pl[0].strip('[').strip(']'))
            if len(_dct) <= i: raise IndexError(pl)
            return self._get(_dct[i], '/'.join(pl[1:])) if len(pl) > 1 else _dct[i]
        d = _dct.get(pl[0])
        return self._get(d, '/'.join(pl[1:])) if d is not None and len(pl) > 1 else d

これは、無理やり最初にリストの何番目かを示すインデックス [n] が path に
含まれたら区切り文字で区切っています。

使用方法は、予め用意した dict を 以下のように書きます

from dicttools import dictXpath

type_scheme = dictXpath.get(foo, "/tokyo/scheme/type")
first_group = dictXpath.get(foo, "/tokyo/scheme/group[0]")

jsonpath-ng より、機能は劣っています。