我有一个多维dict,我希望能够通过key:key对检索值,如果第一个key不存在,则返回“NA”。所有的副词都有相同的键。
d = { 'a': {'j':1,'k':2},
'b': {'j':2,'k':3},
'd': {'j':1,'k':3}
}
我知道我可以使用d.get('c','NA')
来获取子dict(如果它存在的话)并返回'NA',否则我只需要子dict中的一个值。如果它存在的话,我想做类似d.get('c['j']','NA')
的事情。
现在我只是检查顶级键是否存在,然后将子值赋给一个变量(如果存在)或“NA”(如果不存在)。不过,我已经做了大约500次了,而且还从其他地方检索/生成了关于每个顶级密钥的其他信息,我正在尝试加快速度。
与嵌套
dict
对象的层次结构不同,您可以使用一个字典,该字典的键是表示层次结构中路径的元组。以这种方式访问看起来要快15%。您仍然可以使用具有默认值的
get
方法:下面是一个简单而有效的方法来处理普通字典,嵌套任意数量的级别:
它也可以递归地完成:
尽管这样做的效率不如前者。
怎么样
是吗?
如果不是所有的子块都有一个
j
键,那么为了减少创建的相同对象,可以设计如下
使用
defaultdict
的相同想法:相关问题 更多 >
编程相关推荐