【问题标题】:Python Print all from jsonPython 从 json 打印所有内容
【发布时间】:2014-11-22 14:42:33
【问题描述】:

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

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

现在我希望打印返回所有艺术家的姓名。

我会假设使用:

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

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

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

【问题讨论】:

    标签: python json


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      这里的问题是

      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 这样为您提供计数器。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-02-05
        • 1970-01-01
        • 2011-08-08
        • 2015-12-20
        • 2019-03-11
        • 1970-01-01
        • 2013-03-20
        相关资源
        最近更新 更多