dict类的包装器,它扩展了嵌套dict的功能,包括使用键路径导航和嵌套键搜索。这包括混合的dicts和list。

nesteddictionar的Python项目详细描述


嵌套词典

版本:1.2.1

python dicts的包装器,允许您使用key paths在嵌套dict中搜索和导航。也适用于混合字典(嵌套列表和dicts的混合)。源于在嵌套字典中搜索关键字的需要;在为嵌套字典构建另一个完整类上花费了太多时间,但它适合我们的需要。在

示例:

>>>fromnesteddictionaryimportNestedDict#import the NestedDict class>>>d={'path':{'to':{'key':'val'}}}#normal way of doing nested dictionary>>>nested_dict=NestedDict(d)#created a nested dictionary from a normal dictionary

功能

  • 在订阅中使用键路径导航嵌套字典(例如:nested_dict[ ['path','to','key'] ],它与nested_dict['path']['to']['key']相同)
  • 在不违反任何现有dict操作的情况下添加功能(据我所知);keypath是以列表的形式存在的,无论如何不能将其用作普通dict的键。所有其他的dict规则仍然适用。在
  • findall方法:查找嵌套字典中的所有嵌套键。在
  • get和set方法:使用带分隔符的keypath字符串进行导航(例如:nested_dict.get('path.to.key')
  • insert方法:创建一个指向嵌套键的完整路径并设置一个值,即使指向目标键的父键不存在(例如,nested_dict.insert( ['newpath','to','key'], 'newval')也会添加到现有的字典中,结果是:NestedDict({ 'path':{'to':{'key':'val'}}, 'newpath':{'to':{'key':'newval'}} }))。在

限制:

  • 虽然速度很快,但它会增加一些开销,因此永远无法像常规方式访问dicts那样快。在

变更(PEP 440:主要.次要.修补)公司名称:

  • v0.1:开发了在嵌套字典中搜索关键字的方法。在
  • v1.0:nesteddictionary类的初始工作版本。在
  • v1.2:将字典遍历从递归改为函数工具.reduce;这不是python,而是更快(但是,仍然没有直接访问dicts和list那么快)。为了进行比较,在执行以下操作时(这些测试不包括在测试中,但很容易自己编写和测试): ^{pr2}$ 产量:
    >>>648ns±3.17nsperloop(mean±std.dev.of7runs,1000000loopseach)#reduce>>>1.77µs±4.05nsperloop(mean±std.dev.of7runs,1000000loopseach)#recursion>>>89.3ns±0.448nsperloop(mean±std.dev.of7runs,10000000loopseach)#direct

参考文献:

  • Scalpl:与嵌套字典类似的实现。一些好的方法。在
  • Functools Reduce for dicts:加速字典访问,但不是python。在
  • 其他的我肯定忘了提。非常感谢。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何将cassandra中的行数据转换为与列相关的嵌套json   java如何使用jcr XPath在jcr:content/@jcr:data中搜索?   java在使用openCV进行安卓开发时如何利用手机的广角镜头   java解析扩展了接口,结束了一个潜在的无限循环   位置服务的@Override方法中存在java Android应用程序错误   java本地线程的用途和需求是什么   具有左右子访问的java节点树遍历   java验证JsonWebToken签名   JUL日志处理程序中的java日志记录   嵌入式Java读取给定时间段的串行数据。   java有没有办法从多个URL获取多个图像?   java线程通过等待intent阻止自己发送intent   java Spring MVC解析多部分内容请求   java JPA/Hibernate静态元模型属性未填充NullPointerException   java格式错误的字符(需要引号,得到I)~正在处理   java为什么PrintWriter对象抛出FileNotFoundException?   java Neo4j未正确保存标签   java IE不加载图像