3 回答
TA贡献1871条经验 获得超8个赞
dictionary.get("bogus", default_value)
default_value
dictionary["bogus"]
KeyError
.
default_value
None
dictionary.get("bogus") # <-- No default specified -- defaults to None
None
dictionary.get("bogus", None)
TA贡献1998条经验 获得超6个赞
什么是 dict.get()
方法?
get
get(key[, default])
如果键在字典中,则返回键的值,否则为默认值。如果未给出默认值,则默认为None,因此方法永远不会引发 KeyError
.
>>> d = {1:2,2:3}>>> d[1]2>>> d.get(1)2>>> d.get(3)>>> repr(d.get(3))'None'>>> d.get(3,1)1
有速度提高吗?
现在看来,这三种方法都表现出了相似的性能(在彼此约10%的范围内),或多或少独立于单词列表的属性。
get
def getway(d): for i in range(100): s = d.get(i)def lookup(d): for i in range(100): s = d[i]
timeit
>>> import timeit>>> print(timeit.timeit("getway({i:i for i in range(100)})","from __main__ import getway"))20.2124660015 >>> print(timeit.timeit("lookup({i:i for i in range(100)})","from __main__ import lookup"))16.16223979
dis
>>> def lookup(d,val):... return d[val]... >>> def getway(d,val):... return d.get(val)... >>> dis.dis(getway) 2 0 LOAD_FAST 0 (d) 3 LOAD_ATTR 0 (get) 6 LOAD_FAST 1 (val) 9 CALL_FUNCTION 1 12 RETURN_VALUE >>> dis.dis(lookup) 2 0 LOAD_FAST 0 (d) 3 LOAD_FAST 1 (val) 6 BINARY_SUBSCR 7 RETURN_VALUE
它在哪里有用?
if key in dic: val = key[dic] else: val = def_val
val = dic.get(key,def_val)
在哪里没有用呢?
KeyError
有没有可能 get
类特征 dict['key']
?
__missing__
class MyDict(dict): def __missing__(self, key): return None
>>> my_d = MyDict({1:2,2:3})>>> my_d[1]2>>> my_d[3]>>> repr(my_d[3])'None'
TA贡献1111条经验 获得超0个赞
get
dictionary = {"Name": "Harry", "Age": 17}dictionary.get('Year', 'No available data')>> 'No available data'
None
dictionary['Year']
KeyError
.
添加回答
举报