2017-04-22 1 views
-1

"dicts 목록을 반복하는 방법"을 검색하고 dict 자체를 반복하는 방법을 찾았습니다. 실제로 내 머리를 잡지 못했습니다. 그것 주위.dicts 목록에서 dicts 목록을 반복하는 동안 오류가 발생했습니다.

[ 
{'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 = 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에서 재생 목록을 위해'를 사용할 수도 있습니다. 이것은 사전에 관한 질문이 아닙니다. 파이썬에서 루핑의 기본을 잘못 이해했습니다. –

+0

스택 오버플로에 대해 질문하는 것보다 [파이썬 자습서] (https://docs.python.org/3/tutorial/controlflow.html#for-statements)를 시작해야한다고 말하고 싶습니다. –

답변

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

. 대신 할 수있는 암시, 코드의 재 작성 다음은 설명과 같이

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 
관련 문제