首页 > 解决方案 > 如何仅针对字典的某些条目而不是全部处理 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,但是整行都缺少结果。

标签: pythondatabasedictionarytry-catchkeyerror

解决方案


我建议不要在这里使用列表理解。代码不可读

解压缩代码后,您可以通过不同的方式进行操作:

  1. 检查密钥是否存在:if key in dict
  2. 返回默认键:dict.get(test, None)

推荐阅读