从字典的列表值中去除'nan',python

2 投票
2 回答
2535 浏览
提问于 2025-04-20 00:38

我有一个字典:

dict_new = 
{'extracted_layout': [nan, nan, nan, nan, nan, nan, nan, nan, nan, 'shyamanna layout', nan, nan, nan, nan, 'm t s layout', nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 'green glen layout', nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 'h s r layout', nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 'vikas layout', 'annaiah reddy layout', nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 'andhra muniyappa layout', nan, nan, nan, nan, nan, 'lake city layout', nan, 'h s r layout'}

这个字典里有一个键,叫做 extracted_layout,它的值是一个列表,里面全是一些无效的值(nans)。我该怎么把这些无效值去掉呢?

2 个回答

0

当然可以!请看下面的内容:

在编程中,有时候我们需要让程序在特定的条件下执行某些操作。这就像是给程序设定了一些规则,只有当这些规则被满足时,程序才会继续运行。比如说,如果你在玩一个游戏,只有当你得分超过100分时,才能进入下一关。

在代码中,我们通常会用“条件语句”来实现这个功能。条件语句就像是一个检查点,程序会在这里停下来,看看是否满足条件。如果满足,程序就会执行特定的代码;如果不满足,程序可能会执行其他的代码或者直接跳过。

这就像是你在做选择题,只有选择了正确的答案,才能得到分数。条件语句帮助程序做出这样的选择。

希望这个解释能让你更好地理解条件语句的作用!

list_dict = [{"year": 1916, "age": 10},
        {"year": 1826, "age": 'NaN'},
        {"year": 'NaN', "age": 7}]
for my_dict in list_dict:
    for k in my_dict:
        if isnan(float(my_dict[k])):
            my_dict[k] = 0
5

如果nan是指浮点数中的“不是一个数字”,可以使用math.isnan这个函数来把它过滤掉:

>>> import math
>>> nan = float('nan')
>>> nan
nan
>>> math.isnan(nan)
True
>>> math.isnan(1)
False

import math

dict_new['extracted_layout'] = [
    x
    for x in dict_new['extracted_layout']
    if not (isinstance(x, float) and math.isnan(x))
]

撰写回答