我正在尝试从JSONAPI获取一些数据。我不想要API返回的所有数据,所以我编写了一个方法,读取所有数据并返回一个包含相关字段的字典。但有时会丢失一些数据,我想用下划线替换丢失的字段。方法的一个例子是这样的
return {
'foo': data['foo'],
'bar': data['bar']
}
如果数据中缺少一个字段,这将通过一个键错误来实现。有没有可能在一个try-except块中以编程方式捕获哪个字段产生了错误,而不是为每个字段编写try-except块?你知道吗
try:
ret_dict = {
'foo': data['foo'],
'bar': data['bar']
}
except KeyError:
ret_dict[thefailurekey] = '_'
而不是
ret_dict = {}
try:
ret_dict['foo'] = data['foo']
except KeyError:
ret_dict['foo'] = '_'
try:
ret_dict['bar'] = data['bar']
except:
ret_dict['bar'] = '_'
谢谢
使用^{} 的^{} 方法:
.get
如果dict没有请求的键,则返回它的第二个参数(None
默认情况下),因此在不确定的情况下使用它总是安全的。你知道吗示例:
您可能可以从
KeyError
exception对象的成员处获得该信息,但更简单的方法是只使用get()
,如果键不在那里,它将返回一个默认值。你知道吗这比处理异常更好的另一个原因是您只能处理一个异常。如果两把钥匙丢了怎么办?除此之外,您的示例中甚至不会定义
ret_dict
,因为代码失败了。你知道吗您可以使用
dict.get(key, default_val)
,而不是使用try块例如:
相关问题 更多 >
编程相关推荐