Python从json打印全部
问题描述:
我可以使用下面的代码来提取列表中所有艺术家的艺术家之一。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
我应该怎么添加打印所有的艺术家?
答
您应该迭代艺术家,而不是数据本身。
for i in data['topartists']['artist']:
print (i['name'])
答
你已经有了一个很好的答案,所以我只给出一点背景信息。
的这里的问题是,
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符号(暗示了什么):
for artist in data['topartists']['artist']:
print (artist['name'])
在这个更多pythonic解决方案中,该循环让您可以对列表中的每个元素(for artist in list_of_artists
)执行某些操作,而不是像i
那样为您提供一个计数器。
多数民众赞成它!谢谢,我会在几分钟内接受 – phicon 2014-11-22 14:48:48