Python中文
首页
教程
问答
标签
搜索
登录
注册
Python安全dict导航,正确的方法
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<h2>TLDR摘要</h2> <p>我编写了一个函数<code>navigateDict</code>,它在<code>dict</code>上执行安全导航,类似于<code>dict.get()</code>,但是嵌套的。它替代了代码</p> <pre><code>if 1 in data and 'i' in data[1] and 'a' in data[1]['i']: print data[1]['i']['a'] else: print "Not found" </code></pre> <p>大致相当于</p> ^{pr2}$ <ul> <li>类似的东西是否已经是标准库的一部分了?在</li> <li>有没有更惯用的方法来做同样的事情? <ul> <li>任何需要多次键入任何路径组件键的响应都可能是非响应。在</li> </ul></li> </ul> <h2>其他详细信息</h2> <p>具体实施如下:</p> <pre><code># Allow fallback value other than None def navigateDictEx(d, keys, fallback=None): for key in keys: if key in d: d = d[key] else: return fallback return d def navigateDict(d, *keys): return navigateDictEx(d, keys) </code></pre> <p>有关用法示例,请参阅摘要。在</p> <p>不管是否是python函数,在冗余不是一个好主意的地方,这个函数可以减少重复。例如,更改示例中的一个路径组件需要将最多三个不同的值修改为原始示例中的一个,但在修改后的示例中仅修改一个。考虑到我经常犯错误,这是一个很大的胜利。在</p> <p>最后,我要问的是:标准库中是否有这样的东西,或者我需要在我的项目库中为它找到一个位置?在</p> <h2>如果命中率被认为是失误的主要原因</h2> <p>brionius正确地指出捕捉<code>KeyError</code>将起作用:</p> <pre><code>try: print data[1]['i']['a'] except KeyError: print "Not found" </code></pre> <p>这可能是我的方式;它非常简洁,减少了重复。然而,它确实反映了这样一个假设,即命中率将高于未命中率。如果有更好的方法来假设相反的情况,我也想知道。在</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>一种方法是:</p> <pre><code>try: print data[1]['i']['a'] except KeyError: print "Not found!" </code></pre> <p>这符合鸭子打字的精神。它可能快也可能不快,因为我相信处理异常会带来一定的开销,但它肯定是“安全的”。在</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
想用靓汤抢夺价值
10 回答
想申请一份符合工作描述的简历吗
4 回答
想画网格,Python
7 回答
想白痴化我的Python战舰
10 回答
想看两列日期,但只上
2 回答
想看看我写的这个脚本读一个Fortran二进制fi吗
4 回答
想知道Django是如何实现ORM查询优化的吗
3 回答
想知道GeoDjango和地图服务吗
4 回答
想知道Image.resize操作在PIL文件中的详细工作方式吗
6 回答
想知道matplotlib pyplot为什么不调整边距
7 回答
想知道matplotlib颜色的颜色代码吗
1 回答
想知道pd.factorize,pd.get_dummies,sklearn.preprocessing.labeencoder和OneHotEncod之间的区别
7 回答
想知道property()在python中的实际用法吗
8 回答
想知道pyodidejs是如何工作的吗?
1 回答
想知道pyparsing==2.0.1的已完成处理依赖关系
2 回答
想知道ScikitLearn中的编码算法吗
9 回答
想知道VTK 5.04和VTK 5.4.2的vtkMassProperties差异吗
7 回答
想知道一个特定字符在一个特定句子中出现的次数吗
2 回答
想知道两个不同子集的重叠中有多少个对象吗
8 回答
想知道为什么is_素数函数的结果不正确吗
3 回答