Python打印全部来自json

时间:2014-11-22 14:42:34

标签: python json

我可以使用以下代码提取列表中所有艺术家的艺术家之一。

print (data['topartists']['artist'][0]['name'])

现在我希望打印件能够返回所有艺术家的名字。

我会假设使用:

for i in data:
    print (data['topartists']['artist'][i]['name'])

然而,这会导致错误:TypeError: list indices must be integers, not unicode

我应该添加什么来打印所有艺术家?

2 个答案:

答案 0 :(得分:1)

你应该迭代艺术家,而不是数据本身。

for i in data['topartists']['artist']:
    print (i['name'])

答案 1 :(得分:1)

你已经得到了一个很好的答案,所以我只想提供一些背景信息。

这里的问题是

for i in data: ...

为您提供了一个循环,其中idata中的各个元素,而不是您可能期望的i=range(0,len(data))之类的索引。


您的代码解决方案:

解决方案i是一个遍历列表的计数器(C ++ / Java风格):

for i in range(0,len(data)):
    print (data['topartists']['artist'][i]['name'])

更接近普通Python表示法的解决方案(lnxmen提出的建议):

for artist in data['topartists']['artist']:
    print (artist['name'])

在这个更多 pythonic 解决方案中,循环允许您对列表中的每个元素(for artist in list_of_artists)执行某些操作,而不是为您提供类似i的计数器。