2017-02-16 69 views
0

我開始學習使用iris數據集進行Python機器學習的基礎知識。我加載數據集用下面的代碼:獲取對象中每個鍵的類型列表

from sklearn.datasets import load_iris 
iris_dataset = load_iris() 

我然後開始看每個鍵的形狀,但有些鍵列表,並沒有形狀。所以我看看type(iris_dataset['feature_names'])的每個鍵的類型。但是,我不想爲每個密鑰重複此代碼。是否有可能獲得這個虹膜對象中每個鍵的類型?我試過,但它顯然是行不通的:

In [30]: type(iris_dataset.keys()) 
Out[30]: dict_keys 
+6

你可以使用list comprehension'[type(k)for k in iris_dataset]'注意,假設iris_dataset是一個字典,它會自動在for循環中返回它的鍵值,所以你不需要顯式調用'.keys( )' –

+1

嘗試:'對於iris_dataset中的密鑰: \t print(「type of {}:{}」。format(key,type(key)))' –

回答

1

所以,我看每個鍵的類型與type(iris_dataset['feature_names'])

注:好像你想要的類型所有到不同的按鍵,而不是按鍵的種類自己

您可以使用列表中理解,應用type功能數據中的每個關鍵:

[type(iris_dataset[key]) for key in iris_dataset] 

然而,假設iris_dataset是某種dict,按鍵可能有任何命令,所以有一個單獨的類型列表還沒有告訴你哪個類型對應哪個鍵的值。相反,你可能更喜歡的元組(key, type)列表:

[(key, type(iris_dataset[key])) for key in iris_dataset] 
+0

@leaf我唯一能想到的是,第一個你立即知道iris_dataset是一個字典,不是'list'或'tuple' –

+0

@leaf我同意。這是我看到的唯一的「優勢」。我更喜歡不太詳細的版本。 Python 2也可以。 –

+1

@leaf這不是更多或更少的「冗長」,它完全是在做別的事情。 [type(key)...]'獲取鍵的類型,而'[type(data [key])...]'獲得值的類型,這在我的印象中是OP真正想要的。 –

0

可以在地圖上內置的字典的鍵的類型,以及包裹map()list()以得到一個列表:

dict_key_types = list(map(type, iris_dataset.keys()))

相關問題