2015-11-19 25 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也:/ –

相关问题