python:字典获取方法默认值的问题

时间:2010-12-23 07:51:21

标签: python

我这里遇到了一个新问题.. 代码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 [ '名称']) 代码2失败但代码1工作

数据

serverInfo_D:{'user': 'usr', 'pass': 'pass'} 
data: {'par1': 9995, 'extraparam1': 22}
val: {'par1','user','pass','extraparam1'}
对于数据dict ..以及for循环中迭代val

的所有代码都引发了异常

1 个答案:

答案 0 :(得分:5)

来自docs(dict.get):

  

如果键在,则返回key的值   字典,否则默认。如果   默认没有给出,默认为   没有,所以这种方法永远不会引起   一个KeyError。

这就是为什么你的第一个代码有效,第二个没有。