2014-03-29 98 views
-1

我得到這段代碼的類型錯誤。(Python)類型錯誤與字典

dataTable = {a :1, "data":{b:2, "children":[{c:3, "data":{d:4,e:5, "likes": null, f:6.....} } } } 
data = dataTable["data"]["children"]["data"]["likes"] 

輸出:

TypeError: string induces must be integers, not str 

誰能解出這道題在我的代碼,並解釋爲什麼?謝謝!

+0

你確定這是保證是準確的?該代碼會給出一個稍微不同的錯誤。 –

回答

2

這是因爲dataTable["data"]["children"]不是一本字典,它是一個列表:

>>> dataTable["data"]["children"][0]['data']['likes'] 
'null' 

如果你想:

>>> dataTable = {'a' :1, "data":{'b':2, "children":[{'c':3, "data":{'d':4,'e':5, "likes": 'null', 'f':6} }] } } 
>>> type(dataTable["data"]["children"]) 
<type 'list'> 

如果你想從列表中的特定項目,由指標得到它所有的孩子,遍歷列表:

>>> for child in dataTable["data"]["children"]: 
...  print child['data']['likes'] 
... 
null 
+0

啊,它的工作。謝謝!我想我需要看字典。 – user3449872

0

dataTable["data"]["children"]是一個列表,所以查詢data就沒有意義了。

+0

這不提供問題的答案。要批評或要求作者澄清,請在其帖子下方留言。 –

+0

@TonyHopkinson它的確如此,你應該用索引查詢列表,而不是用鍵。 –

+0

咦?你的「答案」是我所說的全部評論。 –