如何仅对字典的某些条目而不对所有字典处理KeyError?

问题描述

我正在使用从sparql查询中检索的数据构建表。问题是某些条目在数据库中没有值,并且当我构建表时,出现keyerror异常。如何处理异常,以便将“无”放置在触发异常的字段中?到目前为止,无值被放置在整行中,但是该例外仅存在于该行的一个单元格中。 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,但是代码也在搜索它们。怎么解决呢? 实际表如下:

enter image description here

在这里,只有BatteryLife应该为None,但是整行都缺少结果。

解决方法

我建议在此处不要使用列表理解功能。代码不可读

一旦您解压缩了代码,就可以采用不同的方式进行操作

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