python - 如何仅针对字典的某些条目而不是全部处理 KeyError?
问题描述
我正在使用从 sparql 查询中检索到的数据构建一个表。问题是某些条目在数据库中没有值,当我构建表时,我得到 keyerror 异常。如何处理异常,以便将 None 放在触发异常的字段中?到目前为止,None 值被放在整行上,但异常只存在于该行的一个单元格中...... python 代码如下:
for j in range(len(results['results']['bindings'])): # effective results from database
try:
data.append([[results['results']['bindings'][j][results['head']['vars'][i]]['value']] for i in
range(len(results['head']['vars']))])
except KeyError:
data.append([None]) # get each line sepparately
发生异常 KeyError 是因为数据库中的某些条目为 NULL,但代码也在搜索它们。如何解决?实际表格如下:
在这里,只有 BatteryLife 应该是 None,但是整行都缺少结果。
解决方案
我建议不要在这里使用列表理解。代码不可读
解压缩代码后,您可以通过不同的方式进行操作:
- 检查密钥是否存在:
if key in dict
- 返回默认键:
dict.get(test, None)
推荐阅读
- javascript - 是的模式验证:在方法 '.matches()' 中排除某个模式
- android - 在 android studio、linux 中添加图标时配置图像资产显示错误
- javascript - 将主题中的 CSS 和 JS 文件合并到 Angular8 项目中的完美正确方法是什么
- spark-ar-studio - SparkAR studio - animation.driver.OnCompleted() 应该如何实现?
- excel - 活动行的 IF 语句 (worksheet_change)
- ios - 防止 Swift 中的保留循环
- flutter - 处理用户在 Zefyr 中删除图像的情况
- drupal-8 - 如何从产品实体(Drupal Commerce)获取产品类型?
- github-actions - GitHub Actions 在 Windows 10 上使用的命令行界面是什么?
- selenium - 减少 selenium/standalone-chrome 内存使用