字典列表中的 Nan 值

pyl*_*ner 4 python numpy

我正在尝试打印字典列表中是否有 nan 值,但未能执行此操作。

data = [{'A' : 2, 'B' : 'ssss'}, {'A' : 3, 'B' : 'xxx'}, {'A' :nan, 'B' : 'ssss'}]
Run Code Online (Sandbox Code Playgroud)

代码 :

for x in data:
    if (x['A']== 2):
        print('two')
    elif (x['A']== np.nan)
        print('null')
    else:
        print('nothing')
Run Code Online (Sandbox Code Playgroud)

yat*_*atu 6

您可以使用 获取字典的值dict.values,在这种情况下,我们可以map使用此方法,并检查any返回的生成器中的值是否与其自身不相等,这意味着它们是NaN

from itertools import chain
data = [{'A' : 2, 'B' : 'ssss'}, {'A' : 3, 'B' : 'xxx'}, 
        {'A' :float('nan'), 'B' : 'ssss'}]
Run Code Online (Sandbox Code Playgroud)
any(i!=i for i in chain.from_iterable(map(dict.values, data)))
# True
Run Code Online (Sandbox Code Playgroud)

或者遵循代码中的逻辑:

for x in data:
    if (x['A']== 2):
        print('two')
    elif (x['A']!= x['A']):
        print('null')
    else:
        print('nothing')
Run Code Online (Sandbox Code Playgroud)