DottedDict是一个Python库,提供一种使用点路径符号访问列表和字典的方法。访问由列表和字典组成的复杂对象内部的深层路径很有用。
入门
from dotted.collection import DottedCollection, DottedDict, DottedList
obj = DottedCollection.factory(dict_or_list)
obj = DottedCollection.load_json(json_value)
obj = DottedDict(a_dict)
obj = DottedList(a_list)
from dotted.utils import dot, dot_json
obj = dot(dict_or_list)
obj = dot_json(json_value)
DottedDict和DottedList具有相同的访问器dict、list ,因此您可以照常进行迭代。两种类型的对象都支持通过虚线路径键进行访问。
示例
范例1:DottedList
obj = DottedList([0, 1, 2, 3, [4, 5, 6], 7, 8, [9, 10]])
以下这些用法都是正确的:
obj[0] == 0
obj['1'] == 1
obj['4.0'] == 4
obj['4.2'] == 6
obj[5] == 7
obj['7.1'] == 10
范例2:DottedDict
obj = DottedDict({'hello': {'world': {'wide': 'web'}}})
以下这些用法都是正确的:
obj['hello'] == {'world': {'wide': 'web'}}
obj['hello.world'] == {'wide': 'web'}
obj['hello.world.wide'] == 'web'
obj.hello == {'world': {'wide': 'web'}}
obj.hello.world == {'wide': 'web'}
obj.hello.world.wide == 'web'
范例3:以上两者一起使用
obj = DottedCollection.factory({
'hello': [{'world': {'wide': ['web', 'web', 'web']}}]
})
您可以通过一下方式访问:
obj['hello'][0]['world']['wide'][0]
obj.hello[0].world.wide[0]
obj.hello[0].world['wide'][0]
obj.hello[0].world['wide.0']
obj.hello['0.world'].wide[0]
...
obj['hello.0.world.wide.0']