2012-06-08 40 views
1

我是Python的noob。Python大師如何識別和檢查Python 3數據結構的內容?

我經常發現自己正在查看一段代碼,並試圖找出數據結構中的內容,例如字典。實際上,我試圖解決的第一件事是「這是什麼類型的數據結構?」然後我試着研究如何看看裏面有什麼。我看着一個變量,並說:「這是一個字典,還是一個列表,還是一個多字節或我還不熟悉的其他東西?」。然後,「裏面有什麼?」。這消耗了大量的時間,我只是不知道我是否採取了正確的方法。

因此,問題是,「Python大師如何找出某種數據結構是什麼,以及他們使用什麼技術來查看這些數據結構中的內容?」

我希望這個問題不是太籠統,但我花費了大量的時間來解決識別數據結構和查看內容的問題,更不用說寫有用的代碼了。

感謝堆。

+0

這裏的所有三個答案都非常好,雖然他們確實有不同的方法,但您應該選擇哪一個對您最有用。 – Arafangion

回答

3

對變量使用type()函數會告訴您數據類型。例如:

inventory = {'cows': 4, 'pigs': 3, 'chickens': 5, 'bears': 2} 
print(type(inventory)) 

將打印

<class 'dict'>

這意味着變量清單是字典。

其他可能的數據類型是'str'表示字符串,'int'表示整數,'float'表示float,'tuple'表示元組,'bool'表示布爾值。

要查看集合中的內容,可以簡單地使用print()函數。

aList = [ 'hunger', 'anger', 'burger'] 
print(aList) 

將輸出

['hunger', 'anger', 'burger'] 
+2

別忘了'pprint'模塊! – detly

2

我通常更關心的一個類型是如何/使用/比完全是一個類型是什麼。

例如,如果一個對象使用說:

foo["hey"] = "there" 
for key, value in foo.items(): 
    print key, '->', value 

然後,我認爲「富」是某種類似字典的對象,除非我有理由進一步調查,這就是我關心。

(注:我仍然在Python 2.x的土地,語法是在Python 3.X略有不同,但點保持)

+0

你有沒有試圖弄清楚什麼東西的長度? –

+2

只有當我想知道它有多長時間。 – Arafangion

2

在「這是什麼?」代替,與Python最好問一下「這是幹什麼的?」或「這是如何使用?」。如果你看到索引的東西,比如a['foo'],它應該不是一個字典或其他對象,而只是它可以通過字符串索引。

這個想法通常被稱爲鴨子打字,所以尋找這可能會給你一些有用的信息。快速搜索打開了這篇文章,這似乎與您無關: http://www.voidspace.org.uk/python/articles/duck_typing.shtml

2

我把一個import pdb;pdb.set_trace()在相關的地方,一旦我使用dir().__dict__pp,或任何其他形式的必要檢查調試器。

+0

這些東西對你有什麼作用?在試圖找出我正在檢查的代碼中發生的事情時,我會從這種方法中獲得什麼好處?謝謝。 –

+0

@DukeDougal:他們幫我弄清楚發生了什麼事。好處是它的工作原理很快。 *你*需要少想多做。 :-) –