2015-11-19 45 views

回答

4

一般來說,您將創建一個新的dict,它是通過過濾舊的構造而創建的。字典內涵是非常適合這樣的事情:

{k: v for k, v in original.iteritems() if v is not None} 

如果必須更新原有的字典,你可以做這樣的...

filtered = {k: v for k, v in original.iteritems() if v is not None} 
original.clear() 
original.update(filtered) 

這可能是最「乾淨「方法,以消除他們就地,我能想到的(它是不安全的修改字典,當你迭代它)


使用original.items()上python3.x

+0

誰降低了它? –

+0

@ user2393267 - 我以爲同樣的事情,但它看起來像他們收回了,所以一切都是正確的與世界;-) – mgilson

+0

很高興收到你的來信。 –

0

你也可以做到這一點使用del命令

f = {}; 
    f['win']=None 
    f 
    => {'win': None} 
    del f['win'] 

或者,如果你想在這個函數的格式,你可以這樣做:

def del_none_keys(dict): 
    for elem in dict.keys(): 
     if dict[elem] == None: 
      del dict[elem] 
1

你也可以採取dict的副本以避免在更改原始dict時迭代。

for k, v in dict(d).items(): 
    if v is None: 
     del d[k] 

但是這對於較大的字典可能不是一個好主意。

+0

'是'是一個更好的方式來比較'無' – alazaro

+0

謝謝,但仍然沒有錯。也許不值得投票。 –

+0

我看到另一個答案,這並沒有收到dv也:/ –

相關問題