2017-03-15 26 views
2

蟒蛇字典如果哪個鍵的值無當名爲get()返回NoneType快譯通:獲得()如果字典值包含無

ex_dict = {"test" : None} ex_dict.get('test', 0)

在上面的例子中,它應該返回0,但它沒有返回0慣於。

任何可以解釋爲什麼它的行爲如此。

+2

[Python文檔](https://docs.python.org/2/library/stdtypes.html#dict.get)狀態只返回如果該鍵不存在於字典中,則爲默認值。在你的例子中,''test''在dict中,所以'get'不會返回默認的'0'。 – xyres

+0

這兩個答案和評論已經都是正確的,並回答你的問題。不過,我假設你想明確地嘗試在你的ex_dict中取消設置「測試」項並試圖將None分配給它。如果你真的想要你必須使用'ex_dict.pop('test',None)',這是一種聰明的方法,當它存在並且沒有錯誤時就可以解除它。 – sphere

回答

1

None響應ex_dict.get('test', 0)是可以的,因爲「測試」鍵存在且具有None值。例如,如果您嘗試與ex_dict.get("non_existing_key", 0)相同,則返回0.

2

不,不應該。如果在ex_dict字典中找不到test密鑰,則應該返回0。但是,由於它的存在,將返回None

ex_dict = {"test" : None} 
print type(ex_dict.get('test', 0)) # <class 'NoneType'>, 'test' exist, return None 

print(ex_dict.get('hello', 0)) # prints 0, 'hello' isn't a key inside ex_dict 
是`GET`