2017-07-11 23 views
1

我在形式的數據集:如何在列表中處理無?

control_albums_tracks[a][0]['items'][b]['id']

ab有一個項目,我想遍歷。和b包含一些None值。

無論我嘗試什麼,我都無法從我的數據中提取song['id']值。

control_track_ids = [song['id'] for song in album[0]['items'] 
         for album in control_albums_tracks if song['id'] is not None] 

我也試着努力適應None值以下的變化:

control_track_ids = [] 

for album in control_albums_tracks: 
    for song in album[0]['items']: 
     control_track_ids.append(song['id']) 

是否有與此有關的任何工作的正確方法?我想將這些值提取到列表中(control_track_ids)。

編輯:我忘了包括追蹤。不幸的是,我已經解決了這個問題,並繼續前進。錯誤是:當試圖迭代列表時,「NoneType對象不是可下載的」。

+1

請顯示數據樣本 – idjaw

+0

'if song ['id']不是None'可能是錯誤的地方。如果歌曲['id']不是'None'for control_albums_tracks中的專輯],請嘗試'[用於專輯[0] ['條目']中的歌曲' – MotKohn

+0

數據太大而無法發佈,因此我不得不指定它的結構高於 –

回答

0

明白了。

control_track_ids = [] 

try: 
    for album in control_albums_tracks: 
     for song in album[0]['items']: 
      control_track_ids.append(song['id']) 
except TypeError: 
    album = None 
0

它看起來像你有兩個for循環子句按錯誤的順序。外環應是第一位的:

control_track_ids = [song['id'] for album in control_albums_tracks 
           for song in album[0]['items'] 
           if song['id'] is not None] 

這也有可能是你想if song is not None代替if song['id'] is not None,但這部分不清晰(這取決於什麼水平的None s的顯示高達)。

+0

什麼都沒有。我試着在最後一行添加「如果專輯不是無」並將歌曲['id']改爲只是歌曲。仍然得到相同的錯誤 –

+0

你應該在你的問題中真正包含異常的完整回溯。沒有這些信息,我們都只是猜測你的代碼出了什麼問題。 – Blckknght

+0

謝謝,我完全忘了。但是,我已經解決了這個問題。我添加了一個簡短的錯誤版本,一旦StackO允許我將問題標記爲已解決。 –