2017-04-21 8 views
0

私は以下のクラスに問題があります。私は以下のトレースバックを取得し続けますが、私は間違っているとは確信していません。私は写真タグ付きの辞書を見ることを期待しています。どんな助けも素晴らしいだろう。クラスに関するPythonの問題

トレースバック:

File "project.py", line 231, in <module> 
    new_photo = Photo(result_get_photo_data) 
    File "project.py", line 228, in __init__ 
    for diction in photo_diction["photo"]["tags"]["tag"]: 
TypeError: list indices must be integers, not st 

マイコード:

class Photo(object): 
    def __init__(self,photo_diction): 
     self.tags = [] 
     for diction in photo_diction["photo"]["tags"]["tag"]: 
      return self.tags.append(diction) 

new_photo = Photo(result_get_photo_data) 
print new_photo.tags 

写真語法、いくつかの辞書が含まれているそのリストの内容の一部。

[ 
    { 
     u'photo':{ 
     u'people':{ 
      u'haspeople':0 
     }, 
     u'dateuploaded':u'1492780609', 
     u'owner':{ 
      u'username':u'Patrick Foto ;)', 
      u'realname':u'', 
      u'nsid':u'[email protected]', 
      u'iconserver':u'2943', 
      u'location':u'Bangkok, 
      Thailand', 
      u'path_alias':u'patrick_foto', 
      u'iconfarm':3 
     }, 
     u'publiceditability':{ 
      u'canaddmeta':0, 
      u'cancomment':1 
     }, 
     u'id':u'33334692904', 
     u'title':{ 
      u'_content':u'Kuala Lumpur skyline' 
     }, 
     u'media':u'photo', 
     u'tags':{ 
      u'tag':[ 
       { 
        u'machine_tag':False, 
        u'_content':u'aerialview', 
        u'author':u'[email protected]', 
        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'[email protected]', 
        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'[email protected]', 
        u'raw':u'Business Finance and Industry', 
        u'authorname':u'Patrick Foto ;)', 
        u'id':u'59579247-33334692904-263370815' 
       }, 
       { 
        u'machine_tag':False, 
        u'_content':u'capitalcities', 
        u'author':u'[email protected]', 
        u'raw':u'Capital Cities', 
        u'authorname':u'Patrick Foto ;)', 
        u'id':u'59579247-33334692904-711565' 
       }, 
       { 
        u'machine_tag':False, 
        u'_content':u'citylife', 
        u'author':u'[email protected]', 
        u'raw':u'City Life', 
        u'authorname':u'Patrick Foto ;)', 
        u'id':u'59579247-33334692904-7631' 
       }, 
       { 
        u'machine_tag':False, 
        u'_content':u'cloudsky', 
        u'author':u'[email protected]', 
        u'raw':u'Cloud - Sky', 
        u'authorname':u'Patrick Foto ;)', 
        u'id':u'59579247-33334692904-834640' 
       }, 
       { 
        u'machine_tag':False, 
        u'_content':u'colorimage', 
        u'author':u'[email protected]', 
        u'raw':u'Color Image', 
        u'authorname':u'Patrick Foto ;)', 
        u'id':u'59579247-33334692904-872992' 
       }, 
       { 
        u'machine_tag':False, 
        u'_content':u'downtowndistrict', 
        u'author':u'[email protected]', 
        u'raw':u'Downtown District', 
        u'authorname':u'Patrick Foto ;)', 
        u'id':u'59579247-33334692904-5634066' 
       }, 
       { 
        u'machine_tag':False, 
        u'_content':u'futuristic', 
        u'author':u'[email protected]', 
        u'raw':u'Futuristic', 
        u'authorname':u'Patrick Foto ;)', 
        u'id':u'59579247-33334692904-61798' 
       }, 
       { 
        u'machine_tag':False, 
        u'_content':u'nopeople', 
        u'author':u'[email protected]', 
        u'raw':u'No People', 
        u'authorname':u'Patrick Foto ;)', 
        u'id':u'59579247-33334692904-9003' 
       }, 
       { 
        u'machine_tag':False, 
        u'_content':u'photography', 
        u'author':u'[email protected]', 
        u'raw':u'Photography', 
        u'authorname':u'Patrick Foto ;)', 
        u'id':u'59579247-33334692904-1935' 
       }, 
       { 
        u'machine_tag':False, 
        u'_content':u'traveldestinations', 
        u'author':u'[email protected]', 
        u'raw':u'Travel Destinations', 
        u'authorname':u'Patrick Foto ;)', 
        u'id':u'59579247-33334692904-872991' 
       }, 
       { 
        u'machine_tag':False, 
        u'_content':u'urbanskyline', 
        u'author':u'[email protected]', 
        u'raw':u'Urban Skyline', 
        u'authorname':u'Patrick Foto ;)', 
        u'id':u'59579247-33334692904-153762' 
       }, 
       { 
        u'machine_tag':False, 
        u'_content':u'architecture', 
        u'author':u'[email protected]', 
        u'raw':u'architecture', 
        u'authorname':u'Patrick Foto ;)', 
        u'id':u'59579247-33334692904-1174' 
       }, 
       { 
        u'machine_tag':False, 
        u'_content':u'business', 
        u'author':u'[email protected]', 
        u'raw':u'business', 
        u'authorname':u'Patrick Foto ;)', 
        u'id':u'59579247-33334692904-11698' 
       }, 
       { 
        u'machine_tag':False, 
        u'_content':u'city', 
        u'author':u'[email protected]', 
        u'raw':u'city', 
        u'authorname':u'Patrick Foto ;)', 
        u'id':u'59579247-33334692904-103' 
       }, 
       { 
        u'machine_tag':False, 
        u'_content':u'cityscape', 
        u'author':u'[email protected]', 
        u'raw':u'cityscape', 
        u'authorname':u'Patrick Foto ;)', 
        u'id':u'59579247-33334692904-3643' 
       }, 
       { 
        u'machine_tag':False, 
        u'_content':u'day', 
        u'author':u'[email protected]', 
        u'raw':u'day', 
        u'authorname':u'Patrick Foto ;)', 
        u'id':u'59579247-33334692904-3511' 
       }, 
       { 
        u'machine_tag':False, 
        u'_content':u'growth', 
        u'author':u'[email protected]', 
        u'raw':u'growth', 
        u'authorname':u'Patrick Foto ;)', 
        u'id':u'59579247-33334692904-12192' 
       }, 
       { 
        u'machine_tag':False, 
        u'_content':u'horizontal', 
        u'author':u'[email protected]', 
        u'raw':u'horizontal', 
        u'authorname':u'Patrick Foto ;)', 
        u'id':u'59579247-33334692904-1049' 
       }, 
       { 
        u'machine_tag':False, 
        u'_content':u'kualalumpur', 
        u'author':u'[email protected]', 
        u'raw':u'kuala lumpur', 
        u'authorname':u'Patrick Foto ;)', 
        u'id':u'59579247-33334692904-24092' 
       }, 
       { 
        u'machine_tag':False, 
        u'_content':u'malaysia', 
        u'author':u'[email protected]', 
        u'raw':u'malaysia', 
        u'authorname':u'Patrick Foto ;)', 
        u'id':u'59579247-33334692904-15385' 
       }, 
       { 
        u'machine_tag':False, 
        u'_content':u'modern', 
        u'author':u'[email protected]', 
        u'raw':u'modern', 
        u'authorname':u'Patrick Foto ;)', 
        u'id':u'59579247-33334692904-1180' 
       }, 
       { 
        u'machine_tag':False, 
        u'_content':u'outdoors', 
        u'author':u'[email protected]', 
        u'raw':u'outdoors', 
        u'authorname':u'Patrick Foto ;)', 
        u'id':u'59579247-33334692904-1860' 
       }, 
       { 
        u'machine_tag':False, 
        u'_content':u'panoramic', 
        u'author':u'[email protected]', 
        u'raw':u'panoramic', 
        u'authorname':u'Patrick Foto ;)', 
        u'id':u'59579247-33334692904-9696' 
       }, 
       { 
        u'machine_tag':False, 
        u'_content':u'sky', 
        u'author':u'[email protected]', 
        u'raw':u'sky', 
        u'authorname':u'Patrick Foto ;)', 
        u'id':u'59579247-33334692904-282' 
       }, 
       { 
        u'machine_tag':False, 
        u'_content':u'skyscraper', 
        u'author':u'[email protected]', 
        u'raw':u'skyscraper', 
        u'authorname':u'Patrick Foto ;)', 
        u'id':u'59579247-33334692904-1306' 
       }, 
+0

あなたのトレースバックがどこにある:私はあなたがおそらくしたいと思いますか? – latsha

+0

@latsha私はそれを含めるために自分の投稿を編集しました!ありがとう! – sammie1991

+3

問題はあなたのクラスに関連していません。 'photo_diction'の構造を表示する必要があります。どこかに、キーに対してリストを格納しています。 "tags"は複数であるので、私の推測は 'photo_diction [" photo "] [" tags "] [0] [" tag "]'は最初のタグにアクセスするのに有効です...しかし、それを見てください。 – roganjosh

答えて

0

ここに2つの問題があります。

  1. photo_dictationはリストです。次のいずれかが必要です。

    for dictation in photo_diction[0]["photo"]["tags"]["tag"]: 
    

    またはダブルループ:

    for photo in photo_dictation: 
        for dictation in photo["photo"]["tags"]["tag"] 
    
  2. あなたがループ内で戻ってきています。

    class Photo(object): 
        def __init__(self,photo_diction): 
         self.tags = [] 
         for diction in photo_diction["photo"]["tags"]["tag"]: 
          self.tags.append(diction) 
         return 
    
+0

トリックをやった@Phil Rosenfieldに感謝します! – sammie1991

+0

'self.tags = list(photo_diction [" photo "] [" tags "] [" tag "])' –

関連する問題