2014-03-29 69 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

咦?你的“答案”是我所说的全部评论。 –