2017-04-22 36 views
-1

我試着用谷歌搜索「如何遍歷列表中的字典」,我能找到的是如何循環字典本身,並不能真正得到我的頭周圍。錯誤循環列表中的字典列表

這裏是我的名單:

[ 
{'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代碼:

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 

如何任何幫助達到標題和藝術家?

+0

'i'是* *元素從'bigList',而不是指數。你也可以在'bigList'中使用'for playlist'。這不是一個關於字典的問題,你得到了Python中循環錯誤的基礎知識。 –

+0

我想說你需要從[Python教程](https://docs.python.org/3/tutorial/controlflow.html#for-statements)開始,而不是在Stack Overflow上提問。 –

回答

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 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

在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 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