1

是否有可能(並且更重要的是,實用)將下面的代碼編寫爲字典理解?凝聚以下代碼,最好使用字典理解

我在這裏創建一個字典,然後檢查「空白」值(用' - '表示)並用另一個字符串值替換它。

test_dict = dict(zip(list_one,list_two)) 
for k,v in test_dict.items(): 
    if v == '-': 
     test_dict[k] = 'missing' 

回答

2

爲什麼不在創建字典時進行替換?

test_dict = dict(zip(list_one, 
        ('missing' if x == '-' else x for x in list_two))) 

或者,如果你有一個現有的詞典中,你可以使用一個創造:如果你想改變就地現有字典那麼真的沒有什麼

{k: 'missing' if v == '-' else v for k, v in d.items()} 

現有代碼錯誤。你可以使用列表理解,如:

[d.__setitem__(k, 'missing') for k, v in d.items() if v == '-'] 

但這是相當醜陋的。

+0

這不僅僅是醜陋的,你在理解中玩弄可變性,在內存中構建一個完全無用的列表,這個列表最終會變得非常龐大。 – Netwave

+0

@DanielSanchez顯然......正如我所說,醜陋。 (大小不是真正的問題,這可以用一個同樣醜陋的'任何(......)'包裹它來避免這種情況) – donkopotamus

+0

非常感謝@donkopotamus我喜歡第一個建議。 –