使用点路径表示法访问dict和list。
dotted的Python项目详细描述
快&脏:
fromdotted.collectionimportDottedCollection,DottedDict,DottedListobj=DottedCollection.factory(dict_or_list)obj=DottedCollection.load_json(json_value)obj=DottedDict(a_dict)obj=DottedList(a_list)fromdotted.utilsimportdot,dot_jsonobj=dot(dict_or_list)obj=dot_json(json_value)
DottedDict和DottedList具有与dict和^{tt4}相同的访问器$ 所以你可以像往常一样重复它们。两种类型的对象都支持通过 虚线路径键。
示例
示例1:dottedlist
obj=DottedList([0,1,2,3,[4,5,6],7,8,[9,10]])
所有这些都是真的:
obj[0]==0obj['1']==1obj['4.0']==4obj['4.2']==6obj[5]==7obj['7.1']==10
如果要附加,可以执行以下操作:
obj.append(12)
或:
obj[8]=11
但后者仅在index == len(obj)时有效。否则你会得到 非常例外。
示例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']
示例4:当新值是dict或list
obj=DottedCollection.factory(some_obj)obj['some.path']={'hello':'world'}# will be converted to a DottedDictobj['another.path']=['hello']# will be converted to a DottedList
示例5:快捷方式
fromdotted.utilsimportdot,dot_jsonobj=dot({'hello':'world'})obj=dot_json('{"hello": "world"}')
例6:内有圆点的钥匙!
实际上,您可以使用转义密钥,但最好避免它们:
fromdotted.utilsimportdot,dot_jsonobj=dot({"hello\.world":"Hello!"})obj=dot_json('{"hello\\\\.world": "Hello!"}')value=obj["hello\.world"]# Hello!
就这些!
测试
从父目录在终端中运行:
python -m dotted.test.test_collection