2017-04-22 17 views
-1

私は「dictsのリストをループする方法」と私が見つけることができるのは、dict自体をループする方法であり、本当に私の頭を得ることはできませんでしたその周りに。dictsのリスト内のdictsのリストにループするエラー

ここに私のリストです:

for i in bigList: 
    playlist = bigList[i] 
    for j in playlist: 
     tracks = playlist['tracks'] 
     for k in tracks: 
      title = tracks['title'] 
      artist = tracks['artist'] 
      myFile.write(allOfTheAbove) 

そして時はいつでも、私はそれが私にこのエラーを与えるコード実行します:

playlist = bigList[i]TypeError: list indices must be integers or slices, not dict 

方法上の任意のヘルプを

[ 
{'number':'firstPlaylist','tracks'[ 
    {'number':'firstTrack','title':'someTitle','artist':'someArtist', 'album':'someAlbum'}, 
    {'number': 'secondTrack', 'title':'someTitle', 'artist':'someArtist', 'album':'someAlbum'}] 
{'number': 'secondPlaylist', 'tracks':[ 
    {'number': 'firstTrack', 'title':'someTitle', 'artist':'someArtist', 'album':'someAlbum'}, 
    {'number': 'secondTrack', 'title':'someTitle', 'artist':'someArtist', 'album':'someAlbum'}]] 

ここに私のpythonのコードですタイトルやアーティストに到達するには?

+0

は 'i'はないインデックス' bigList'、から*要素*です。 bigListの中で 'for playlist 'を使うこともできます。これは辞書についての質問ではありません。Pythonでのループの基礎が間違っています。 –

+0

Stack Overflowに関する質問よりも、[Pythonチュートリアル](https://docs.python.org/3/tutorial/controlflow.html#for-statements)から始める必要があると思います。 –

答えて

0

使用以下のコード:あなたが頻繁にリストのメンバーにアクセスするためにインデックスを使用する必要はありません Pythonで

bigList= [{'number':'firstPlaylist','tracks':[{'number':'firstTrack','title':'someTitle','artist':'someArtist', 'album':'someAlbum'}, 
    {'number': 'secondTrack', 'title':'someTitle', 'artist':'someArtist', 'album':'someAlbum'}]}, 
{'number': 'secondPlaylist', 'tracks':[ 
    {'number': 'firstTrack', 'title':'someTitle', 'artist':'someArtist', 'album':'someAlbum'}, 
    {'number': 'secondTrack', 'title':'someTitle', 'artist':'someArtist', 'album':'someAlbum'}]}] 

for i in bigList: 
    playlist = i['tracks'] 
    for j in playlist: 
     #tracks = j['tracks'] 
     #for k in tracks: 
      title = j['title'] 
      artist = j['artist'] 
      print title 
      print artist 
      #myFile.write(allOfTheAbove) 
0

。あなたのコードの次の書き換えが示すようにその代わりに、暗黙的に行うことができます

bigList = [ 
    {'number': 'firstPlaylist', 
    'tracks': [ 
      {'number': 'firstTrack','title': 'someTitle','artist': 'someArtist', 'album': 'someAlbum'}, 
      {'number': 'secondTrack', 'title': 'someTitle', 'artist': 'someArtist', 'album': 'someAlbum'} 
     ] 
    }, 
    {'number': 'secondPlaylist', 
    'tracks': [ 
      {'number': 'firstTrack', 'title': 'someTitle', 'artist': 'someArtist', 'album': 'someAlbum'}, 
      {'number': 'secondTrack', 'title': 'someTitle', 'artist': 'someArtist', 'album': 'someAlbum'} 
     ] 
    } 
] 

for playlist in bigList: 
    print('Play List: {}'.format(playlist['number'])) 
    print(' Tracks:') 
    for track in playlist['tracks']: 
     print(' Number: {number}, Title: {title}, Artist: {artist}'.format(**track)) 

出力:

Play List: firstPlaylist 
    Tracks: 
    Number: firstTrack, Title: someTitle, Artist: someArtist 
    Number: secondTrack, Title: someTitle, Artist: someArtist 
Play List: secondPlaylist 
    Tracks: 
    Number: firstTrack, Title: someTitle, Artist: someArtist 
    Number: secondTrack, Title: someTitle, Artist: someArtist 
関連する問題