python:字典get方法的默认值问题
我遇到了一个新问题……
代码 1:
try:
urlParams += "%s=%s&"%(val['name'], data.get(val['name'], serverInfo_D.get(val['name'])))
except KeyError:
print "expected parameter not provided - "+val["name"]+" is missing"
exit(0)
代码 2:
try:
urlParams += "%s=%s&"%(val['name'], data.get(val['name'], serverInfo_D[val['name']]))
except KeyError:
print "expected parameter not provided - "+val["name"]+" is missing"
exit(0)
看看 serverInfo_D[val['name']] 和 serverInfo_D.get(val['name'])之间的区别。代码 2 失败了,但代码 1 成功了。
数据:
serverInfo_D:{'user': 'usr', 'pass': 'pass'}
data: {'par1': 9995, 'extraparam1': 22}
val: {'par1','user','pass','extraparam1'}
在处理数据字典时会引发异常……而且在循环中遍历 val 的所有代码都会出问题。
1 个回答
5
来自文档(dict.get):
如果字典中有这个键,就返回这个键对应的值;如果没有,就返回默认值。如果没有提供默认值,默认会是None,这样这个方法就不会引发KeyError错误。
这就是为什么你的第一段代码能正常工作,而第二段代码不行的原因。