python - 如何在处理字典的函数中处理重复的代码块?
问题描述
我有一个嵌套字典,从中提取特定信息。在某些情况下,我想要的信息可能在几个键之一下,或者可能不存在。
我编写的代码有效,但有复制/粘贴的味道。在处理潜在的 s 时,处理重复代码块的最佳方法是KeyError
什么?
def getInfo(dic, key):
info = ""
try:
info = dic[key]["other_key_1"]
return "This result " + info
except KeyError:
pass
try:
info = dic[key]["other_key_2"]
return "This result " + info
except KeyError:
pass
try:
info = dic[key]["other_key_3"]
return "This result " + info
except KeyError:
pass
#if they all don't exist
return "This result " + key
解决方案
您可以将所有可能的键存储在一个列表中并循环遍历它。
这样,添加新键进行搜索也会更容易。
def getInfo(dic, key):
info = ""
possible_keys = ["other_key_1", "other_key_2", "other_key_3"]
for current_key in possible_keys:
try:
info = dic[key][current_key]
return "This result " + info
except KeyError:
pass
#if they all don't exist
return "This result " + key
推荐阅读
- html - 我如何始终保持我的 html 元素粘在父元素的底部,我正在使用溢出:隐藏并将高度隐式地赋予父元素?
- java - @Validated 注解使@ConfigurationProperties 类的字段为空
- powershell - 在线交换,New-DynamicDistributionGroup 与电话号码
- javascript - ajax php mysql 需要多少数据?
- ruby - 对于带有测试的 Ruby 命令行应用程序,推荐的文件夹结构是什么?
- wordpress - 将 nginx 重定向到 wordpress docker 容器
- nginx - Odoo13 - 缓存 /web/content 有意义吗?
- java - Java Stream 比较和过滤 Map 中的条目
>> - hibernate - @ElementCollection 在同一个表中
- git - 我应该将 .idea/sshConfigs.xml 添加到 gitignore 吗?