2016-04-23 96 views
-1

使用Python 2並想知道爲什麼False不是True被打印?我認爲我們有關鍵值2,所以get(2)應該返回True?謝謝。python defaultdict get方法返回值

import collections 

dict = collections.defaultdict(list) 
dict[1]=[1,2,3] 
dict[2]=[4,5,6] 

print dict 

if dict.get(2) == True: 
    print True 
else: 
    print False 

在此先感謝, 林

+3

閱讀[得到( )](https://docs.python.org/2/library/stdtypes.html)文檔 –

+0

@BillalBEGUERADJ,投票。但爲什麼'if 2 in dict == True:'也返回False? –

+0

@ LinMa:這是[鏈式比較](https://docs.python.org/2/reference/expressions.html#not-in)。停止將事情與「真」或「假」進行比較;這幾乎從來都不是一個好主意,尤其是使用'=='。 – user2357112

回答

-1

切勿使用內置的名稱作爲您的變量名蟒蛇。

My_dict.get()不返回True,它返回傳遞鍵的值,如果它存在,否則如果你沒有傳遞默認參數,默認返回None

如果你想查詢的My_dict.get()驗證,你可以這樣做:

if My_dict.get(2): 
    print True 
else: 
    print False 

或者只是:

print bool(My_dict.get(2)) 

下面是一個例子:

>>> from collections import defaultdict 
>>> 
>>> 
>>> my_dict = defaultdict() 
>>> 
>>> my_dict[1]=[1,2,3] 
>>> my_dict[2]=[4,5,6] 
>>> 
>>> my_dict 
defaultdict(None, {1: [1, 2, 3], 2: [4, 5, 6]}) 
>>> 
>>> 2 in my_dict 
True 
>>> 
>>> my_dict.get(2) 
[4, 5, 6] 
>>> 
>>> my_dict.get(7, None) 
>>> bool(my_dict.get(7, None)) 
False 
+1

感謝Kasramvd,投票。如果密鑰不存在,我應該檢查什麼樣的返回值? –

+1

@LinMa檢查編輯。 – Kasramvd

+1

否:如果'dict [2]'是'None','False'或其他值爲False的值會怎麼樣?你應該在'dict'中使用'2。 – ThinkChaos