使用复杂列表定义类时键入错​​误

时间:2017-08-17 10:01:59

标签: python typeerror

我正在尝试定义一个类,它将从包含多个字典的列表中创建标记列表(见下文),但是当我尝试它时,我得到以下回溯。我不确定自己做错了什么。任何建议将不胜感激!

  File "file.py", line 415, in <module>
    p = Photo(data)
  File "file.py", line 395, in __init__
    for d in p_d["photo"]["tags"]["tag"]["_content"]:
TypeError: list indices must be integers or slices, not str

当前代码:

class Photo :

    def __init__(self,p_d) :
        self.tags = []
        for d in p_d["photo"]["tags"]["tag"]["_content"]:
            self.tags.append(d)
        return

p = Photo(data)
print(p)

&#34;数据&#34;的内容看起来像#34; Photo Diction&#34;在this post。以下是带有标记的部分的示例:

     u'media':u'photo',
     u'tags':{  
        u'tag':[  
           {  
              u'machine_tag':False,
              u'_content':u'aerialview',
              u'author':u'59600577@N07',
              u'raw':u'Aerial View',
              u'authorname':u'Patrick Foto ;)',
              u'id':u'59579247-33334692904-8319'
           },
           {  
              u'machine_tag':False,
              u'_content':u'buildingexterior',
              u'author':u'59600577@N07',
              u'raw':u'Building Exterior',
              u'authorname':u'Patrick Foto ;)',
              u'id':u'59579247-33334692904-1727027'
           },
           {  
              u'machine_tag':False,
              u'_content':u'businessfinanceandindustry',
              u'author':u'59600577@N07',
              u'raw':u'Business Finance and Industry',
              u'authorname':u'Patrick Foto ;)',
              u'id':u'59579247-33334692904-263370815'
           }, 

1 个答案:

答案 0 :(得分:1)

显然,p_d["photo"]["tags"]["tag"]是一个列表,您无法在列表中包含项['_content']

你可以做到

for adict in p_d["photo"]["tags"]["tag"]:
    self.tags.append(adict["_content"])