我可以使用以下代码提取列表中所有艺术家的艺术家之一。
print (data['topartists']['artist'][0]['name'])
现在我希望打印件能够返回所有艺术家的名字。
我会假设使用:
for i in data:
print (data['topartists']['artist'][i]['name'])
然而,这会导致错误:TypeError: list indices must be integers, not unicode
我应该添加什么来打印所有艺术家?
答案 0 :(得分:1)
你应该迭代艺术家,而不是数据本身。
for i in data['topartists']['artist']:
print (i['name'])
答案 1 :(得分:1)
你已经得到了一个很好的答案,所以我只想提供一些背景信息。
这里的问题是
for i in data: ...
为您提供了一个循环,其中i
是data
中的各个元素,而不是您可能期望的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
的计数器。