2015-09-14 37 views
0

我有以下模式:修正了字典理解的錯誤

episodes = {key: value for key, value in 
        item_data['seasons'][season_id]['episodes'].items() 
       if (item_data['seasons'][season_id].get('episodes') and key.isdigit())} 

不幸的是,有時'episodes',將是空的,引起以下錯誤:

KeyError: 'episodes' 

什麼將是一個優雅的方式來修復上面的問題?我目前的解決方案具有以下功能:

episodes = {key: value for key, value in item_data['seasons'][season_id].get('episodes') 
      if item_data['seasons'][season_id].get('episodes')} 
episodes = {key: value for key, value in item_data['seasons'][season_id]['episodes'].items() 
      if key.isdigit()} 
+0

我會不會在這裏使用的理解。 – taesu

+0

我也不會 - 我會將內容分配給一個變量,然後迭代它的鍵並刪除任何非數字。否則,我會使用'filter'。 –

+0

雖然這不是問題:) OP要求我們指出他們的詞典理解中的錯誤,所以這就是我所做的。 –

回答

1
episodes = { 
    key: value for 
    key, value in 
    item_data['seasons'][season_id].get('episodes', {}).items() 
    if key.isdigit() 
} 

請注意,您if過濾器的第一部分是沒有必要的,因爲{}.items()無鑰匙:)