没有项目描述
pathdict的Python项目详细描述
具有访问和操作嵌套功能的扩展dict 使用路径符号的itens。
安装
pip install pathdict
示例
您可以使用点路径更改链式多访问运算符 符号:
frompathdictimportPathDictpath_dict=PathDict({'dogs':{'male':'Xablau','female':'Xena'},'enterprises':['B2W','Sieve'],'author':'@diogommartins'})# Same as path_dict['dogs']['female']print(path_dict['dogs.female'])>>>'Xena'
列表也可以通过路径符号访问:
frompathdictimportPathDictpath_dict=PathDict({'mammalia':{'ferae':{'carnivora':['carnidae','felidae','mustelidae','ursidae','viverridae']},'something':{'wiki':'pedia'}}})# Same as path_dict['mammalia']['ferae']['carnivora'][3]print(path_dict['mammalia.ferae.carnivora.3'])>>>'ursidae'
使用普通pythondict所做的一切都将工作。
定制
默认的separator是.,但是可以使用 separator夸格。
frompathdictimportPathDictpath_dict=PathDict({'mammalia':{'ferae':{'carnivora':['carnidae','felidae','mustelidae','ursidae','viverridae']},'something':{'wiki':'pedia'}}},separator='/')print(path_dict['mammalia/ferae/carnivora/3'])>>>'ursidae'
可以让PathDict生成给定路径的步骤:
frompathdictimportPathDictpath_dict=PathDict(create_if_not_exists=True)path_dict['the.answer.to.all.problems']=42print(path_dict)>>>{'the':{'answer':{'to':{'all':{'problems':42}}}}}
也适用于嵌套列表字段:
frompathdictimportPathDictpath_dict=PathDict(create_if_not_exists=True)path_dict['some.letters']=['a','b']path_dict['some.letters.2']='c'print(path_dict)>>>{'some':{'letters':['a','b','c']}}
默认情况下,PathDict中的列表值类型转换为 pathdict.collection.StringIndexableList。你可以改变它 使用list_class关键字参数的行为。当心如果 list_class类没有实现StringIndexableList协议, pathdict的列表路径将失败。
frompathdictimportPathDictpath_dict=PathDict()path_dict["list"]=[1,2,3]type(path_dict["list"])>>>pathdict.collection.StringIndexableListpath_dict["list.1"]>>>2custom_path_dict=PathDict(list_class=list)type(custom_path_dict["list"])>>>listcustom_path_dict["list.1"]>>>TypeError:listindicesmustbeintegersorslices,notstr