首页 > 解决方案 > 删除字典中的空值

问题描述

我的代码如下:

new_dict = {k: v for k,v in d.items() if v != None}

我需要删除''字典中出现的空值。

我目前得到输出:

'000B4662348C35B4': ['000B4662348C35B4', '', '', '', '', '', '2938717381', '5286676508', '7818174481', '2938717381', '4110479734', '9894624226', '9827417465', '9907632031', '2941365751', '1220277655', '7455720881', '88810260', '8441033464', '3992507902', '8464607083', '1201527184', '2861935553', '4110479734', '5789253700', '2637281600', '5603666228', '9126320955', '2431085055', '8833906919', '1565530436', '8340343124', '2029932640', '6334249086'],

这只是输出的一小部分,但你应该明白了。我只想要''删除。

到目前为止,我已经尝试过:

new_dict = {k: v for k,v in d.items() if v != ''}
new_dict = {k: v for k,v in d.items() if v}

所有这些仍然打印相同的输出。

标签: pythondictionarytuples

解决方案


您可以在字典值上使用列表推导,您将在其中过滤掉空元素:

d = {'000B4662348C35B4': ['000B4662348C35B4', '', '', '', '', '', '2938717381', '5286676508', '7818174481', '2938717381', '4110479734', '9894624226', '9827417465', '9907632031', '2941365751', '1220277655', '7455720881', '88810260', '8441033464', '3992507902', '8464607083', '1201527184', '2861935553', '4110479734', '5789253700', '2637281600', '5603666228', '9126320955', '2431085055', '8833906919', '1565530436', '8340343124', '2029932640', '6334249086']}

d = {k: [i for i in v if i] for k, v in d.items()}
print(d)

印刷:

{'000B4662348C35B4': ['000B4662348C35B4', '2938717381', '5286676508', '7818174481', '2938717381', '4110479734', '9894624226', '9827417465', '9907632031', '2941365751', '1220277655', '7455720881', '88810260', '8441033464', '3992507902', '8464607083', '1201527184', '2861935553', '4110479734', '5789253700', '2637281600', '5603666228', '9126320955', '2431085055', '8833906919', '1565530436', '8340343124', '2029932640', '6334249086']}

笔记:

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

只会过滤掉不等于''的字典值,但您的字典值是列表。


编辑:没有列表和字典理解:

out = {}
for k, v in d.items():
    tmp = []
    for i in v:
        if i != "":
            tmp.append(i)
    out[k] = tmp

print(out)

推荐阅读