Как бы я собрал все это в одно понимание? - PullRequest
0 голосов
/ 02 октября 2019

Мне трудно понять словарь. У меня есть немного кода, который мне нужно проверить, был ли удален трек из библиотеки iTunes. Если это так, мне нужно удалить его из своего специального словаря плейлистов, а также из словаря мастер-треков.

Я попытался использовать приведенный ниже код, но он сообщает мне, что размер словаря изменился во время итерации.

Я читал здесь и здесь , пытаясь понять, как я делаю все это в понимании словаря, но это растопило мой мозг.

# Next step is to ensure the track_id for a particular persistent_id is correct
# because iTunes can change the track_id of a track, but the persistent_id
# remains the same regardless of any track changes.
#
# Step through each playlist in the musicDict dictionary and update the
# persistentID with the correct trackID or delete the track data from the
# dictionary if it cannot be found in the itl

for playlistKey in musicDict['playlists'].keys():
   if 'tracks' in musicDict['playlists'][playlistKey]:
      for persistentID in musicDict['playlists'][playlistKey]['tracks'].keys():
         try:
            musicDict['playlists'][playlistKey]['tracks'][persistentID] = itl.byPID[persistentID].track_id # Track exists in itl
         except:
            del musicDict['playlists'][playlistKey]['tracks'][persistentID] # track no longer exists in itl
         if persistentID in musicDict['tracks'].keys() and persistentID not in itl.byPID.keys(): # check to see if the track needs to be deleted from the musicDict
            del musicDict['tracks'][persistentID] # delete the track since it no longer exists in itl

Я использую модуль libpytunes и добавил еще один словарь под названием byPID, так как track_id не остается статичным для музыки iTunes, следовательно, переменная persistentID и словарь itl.byPID.

Как я уже писал выше, это приводит к ошибке (и я понимаю, почему) и я хотел бы превратить это в понимание списка или эффективный цикл for, если понимание не будет легко читаемым.

...