Jon*_*han 23 python dictionary
dict.get(key[, default])
即使密钥在字典中,为什么评估默认值?
>>> key = 'foo'
>>> a={}
>>> b={key:'bar'}
>>> b.get(key, a[key])
Traceback (most recent call last):
File "<pyshell#5>", line 1, in <module>
b.get(key, a[key])
KeyError: 'foo'
Run Code Online (Sandbox Code Playgroud)
Jon*_*han 26
与任何函数调用一样,在执行调用之前会计算参数.
在这种情况下dict.get()
也不例外......
Dob*_*boy 12
改用它
x = b.get(key) or a.get(key)
Run Code Online (Sandbox Code Playgroud)
or
并且and
是短路操作员,所以如果b
有钥匙就不会看a
.但如果你有falsy
价值观,就会出现问题b
.如果是这种情况你可以做..
x = b[key] if key in b else b.get(a)
Run Code Online (Sandbox Code Playgroud)
你可以重写你给出的例子
b.get(key, a.get(key))
Run Code Online (Sandbox Code Playgroud)
避免例外.None
如果密钥不在字典中,则返回.更一般地说,如果你想避免评估第二个参数,你可以使用
try:
x = b[key]
except KeyError:
x = a[key] # or whatever the default value is supposed to be
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6628 次 |
最近记录: |