Python 删除具有空值的键

Python 删除具有空值的键,python,dictionary,Python,Dictionary,如何删除dict中没有任何值的键。我的口述如下: d = {'CB': '', 'CA': [-7.5269999504089355, -2.2330000400543213, 6.748000144958496], 'C': [-8.081000328063965, -3.619999885559082, 6.406000137329102], 'N': [-6.626999855041504, -2.318000078201294, 7.9029998779296875], 'H':''}

如何删除dict中没有任何值的键。我的口述如下:

d = {'CB': '', 'CA': [-7.5269999504089355, -2.2330000400543213, 6.748000144958496], 'C': [-8.081000328063965, -3.619999885559082, 6.406000137329102], 'N': [-6.626999855041504, -2.318000078201294, 7.9029998779296875], 'H':''}
我想删除值为空的键。我需要输出为:

d = {'CA': [-7.5269999504089355, -2.2330000400543213, 6.748000144958496], 'C': [-8.081000328063965, -3.619999885559082, 6.406000137329102], 'N': [-6.626999855041504, -2.318000078201294, 7.9029998779296875]}

如何做到这一点?

使用听写理解:

>>> {k:v for k, v in d.items() if v != ''}
{'N': [-6.626999855041504, -2.318000078201294, 7.9029998779296875], 'CA': [-7.5269999504089355, -2.2330000400543213, 6.748000144958496], 'C': [-8.081000328063965, -3.619999885559082, 6.406000137329102]}
如果您所说的空是指任何错误值,那么只要使用
If v


如果要修改原始dict本身(这将影响对dict对象的所有引用):


使用听写理解:

>>> {k:v for k, v in d.items() if v != ''}
{'N': [-6.626999855041504, -2.318000078201294, 7.9029998779296875], 'CA': [-7.5269999504089355, -2.2330000400543213, 6.748000144958496], 'C': [-8.081000328063965, -3.619999885559082, 6.406000137329102]}
如果您所说的空是指任何错误值,那么只要使用
If v


如果要修改原始dict本身(这将影响对dict对象的所有引用):


如果您确实需要在一行中完成此操作:

for k in [k for k,v in d.iteritems() if not v]: del d[k]
这太难看了。它列出
d
中具有“空白”值的所有键,然后在此列表上迭代,从
d
中删除键(以避免在迭代过程中不安全地从字典中删除项)

我建议用三行文字更具可读性:

blanks = [k for k,v in d.iteritems() if not v]
for k in blanks:
    del d[k]
如果可以制作新的
dict
,请使用:


如果您确实需要在一行中完成此操作:

for k in [k for k,v in d.iteritems() if not v]: del d[k]
这太难看了。它列出
d
中具有“空白”值的所有键,然后在此列表上迭代,从
d
中删除键(以避免在迭代过程中不安全地从字典中删除项)

我建议用三行文字更具可读性:

blanks = [k for k,v in d.iteritems() if not v]
for k in blanks:
    del d[k]
如果可以制作新的
dict
,请使用:

为什么“在一行”是一个要求?你对哪一部分有困难?确定“空白”值?移除它们?为什么要求“在一行中”?你对哪一部分有困难?确定“空白”值?移除它们?