2017-04-22 43 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