3 回答

TA貢獻(xiàn)1871條經(jīng)驗(yàn) 獲得超8個(gè)贊
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貢獻(xiàn)1998條經(jīng)驗(yàn) 獲得超6個(gè)贊
什么是 dict.get()
方法?
get
get(key[, default])
如果鍵在字典中,則返回鍵的值,否則為默認(rèn)值。如果未給出默認(rèn)值,則默認(rèn)為None,因此方法永遠(yuǎn)不會(huì)引發(fā) 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
有速度提高嗎?
現(xiàn)在看來(lái),這三種方法都表現(xiàn)出了相似的性能(在彼此約10%的范圍內(nèi)),或多或少獨(dú)立于單詞列表的屬性。
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)
在哪里沒(méi)有用呢?
KeyError
有沒(méi)有可能 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貢獻(xiàn)1111條經(jīng)驗(yàn) 獲得超0個(gè)贊
get
dictionary = {"Name": "Harry", "Age": 17}dictionary.get('Year', 'No available data')>> 'No available data'
None
dictionary['Year']
KeyError
.
添加回答
舉報(bào)