2011-05-05 42 views
2

快速Python的問題:如何從一個嵌套列表訪問數據是這樣的:Python:如何從這種類型的列表中訪問數據?

 
{'album': [u'Rumours'], 'comment': [u'Track 3'], 'artist': [u'Fleetwood Mac'], 'title': [u'Never Going Back Again'], 'date': [u'1977'], 'genre': [u'Rock'], 'tracknumber': [u'03']} 

我試圖listname[0][0]但它返回的錯誤: AttributeError: 'int' object has no attribute 'lower'

那麼我將如何去這樣做?

+5

你的例子是一個字典,而不是一個列表。你有沒有嘗試訪問它,例如'foo ['genre'] [0]'? – sverre 2011-05-05 13:11:18

+0

http://docs.python.org/library/stdtypes.html#mapping-types-dict – rubik 2011-05-05 14:15:49

回答

3

這不是一個列表。這是一本字典。

該字典沒有排序,因此無法通過數字索引*進行訪問。

您必須參考它是這樣的:listname['album']

以上將返回一個列表的一個元素(這恰好是一個列表):[u'Rumours'],進入電影列表,你像往常一樣。

這麼幹脆:

listname['album'][0] 
# Will output the string inside the list. 

注意,這個名單可以有更多的元素,所以你要提到他們像這樣[0][1]

看看在docs以獲取更多信息。


*你可以這樣做:

d = {2:"a",1:"b"} 
print d[1] ### prints string b 

我的意思是,你,你使用的鍵可以爲不使用基於零個指標「任何你想要的」,這鑰匙是指值。

+0

謝謝,我對此感到困惑。它工作正常。 – wkoomson 2011-05-05 13:14:27

+0

@ user738534:好的,沒問題,我已經用更多的信息更新了我的答案,以防萬一。 – Trufa 2011-05-05 13:18:59

9

這不是一個列表,它是一個字典。它將每個key,value對以一個不可變類型作爲鍵和任何類型的值。在你的情況下,這是一個字典,其中str類型的鍵和list的值。您必須首先從字典中從列表中提取的列表,然後第一個元素,假設你的意思是說:

somedict = {"test": [u"spam"], "foo": [u"bar"]} 
print(somedict["test"][0]) 

請注意,一本字典的類型不是綁定,可以混合類型:

somedict = {1: "test", "foo": ["bar", "spam"]} 

而關於字典一些更多的信息可以在這裏找到:http://docs.python.org/tutorial/datastructures.html#dictionaries

+0

謝謝,你的工作最好! – wkoomson 2011-05-05 14:19:06

+0

@wkoomson:那麼請考慮接受我的回答:)你可以通過點擊我答案左邊的檢查按鈕來實現。 – orlp 2011-05-05 14:34:34

+0

@wkoomson:正如@nightcracker所說的那樣,如果最好的答案應該被接受。 – Sparky 2011-06-23 02:34:25