首页 > 解决方案 > 从python中的嵌套字典中删除nan

问题描述

从 python 中的嵌套字典中删除 NaN 值。我的嵌套字典如下所示:

my_dict = {'abc':{'a':0.987, 'b':0.765, 'c': numpy.nan}, 'mda':{'a':0.145, 'b':0.584, 'e':numpy.nan}, 'fop':{'a':0.145, 'b': numpy.nan, 'c':0.485}}

我想从嵌套字典中删除 Nan 值,预期结果如下所示:

my_dict = {'abc':{'a':0.987, 'b':0.765}, 'mda':{'a':0.145, 'b':0.584}, 'fop':{'a':0.145, 'c':0.485}}

我写了下面的代码来从嵌套字典中删除 Nan 的:

def remove_nan_from_dict(my_dict):
    new_dict = {}
    original_dict = collections.defaultdict()
    from math import isnan
    for k, v in my_dict.items():
        for k1, v1 in v.items():
            print(v1)
            if not isnan(v1):
                new_dict[k1] = v1
            print(new_dict)
        original_dict[k] = new_dict
        # print(original_dict.items())
    return original_dict

但低于字典:

defaultdict(None, {'abc': {'a': 0.145, 'b': 0.584, 'c': 0.485}, 'mda': {'a': 0.145, 'b': 0.584, 'c': 0.485}, 'fop': {'a': 0.145, 'b': 0.584, 'c': 0.485}})

标签: pythondictionary

解决方案


您可以在此处使用 dict 理解并检查该值是否为np.nan


new_dict = {k: {a: b for a, b in v.items() if not np.isnan(b)} for k, v in my_dict.items()}

推荐阅读