2017-05-11 43 views
3

在Python3中,我應該使用什麼類型來檢查字典鍵是否屬於它?用於isinstance()檢查的dict_keys的顯式python3類型是什麼?

>>> d = {1 : 2} 
>>> type(d.keys()) 
<class 'dict_keys'> 

所以很自然我嘗試這樣做:

>>> isinstance(d.keys(), dict_keys) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
NameError: name 'dict_keys' is not defined 

我應該把什麼代替明確dict_keys作爲第二個參數爲isinstance?我知道使用list(d.keys())可以轉換爲列表(恢復Python2行爲),但在這種情況下,這不是一個選項。)這是非常有用的,因爲我必須處理可能採用字典鍵形式的未知輸入變量。

+0

是否要檢查字典鍵中是否存在值或變量?試試這個:>>> d = {1:2} >>> if 1 in d:print(「1 is a key」)''' – arsho

回答

3

可以使用collections.abc.KeysView

In [19]: isinstance(d.keys(), collections.abc.KeysView) 
Out[19]: True 

collections.abc模塊提供可 用來測試一個類是否提供了一個特定的接口

0123抽象基類
+0

在python 3.6.3中,我能夠'instanceof d.keys(),collections.KeysView)'(不abc) – MarkNS

相關問題