【问题标题】:Nan values in a list of dictionaries字典列表中的 Nan 值
【发布时间】:2020-07-12 20:49:24
【问题描述】:

如果字典列表中有 nan 值,我正在尝试打印,但没有这样做。

data = [{'A' : 2, 'B' : 'ssss'}, {'A' : 3, 'B' : 'xxx'}, {'A' :nan, 'B' : 'ssss'}]

代码:

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

【问题讨论】:

标签: python numpy


【解决方案1】:

您可以使用if (x['A'] is np.nan) 代替==

【讨论】:

    【解决方案2】:

    改用np.isnan()

    for x in data:
        if (x['A']== 2):
            print('two')
        elif (np.isnan(x['A']))
            print('null')
        else:
            print('nothing')
    

    来源:

    https://docs.scipy.org/doc/numpy-1.13.0/user/misc.html https://docs.scipy.org/doc/numpy/reference/generated/numpy.isnan.html

    【讨论】:

      【解决方案3】:

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

      from itertools import chain
      data = [{'A' : 2, 'B' : 'ssss'}, {'A' : 3, 'B' : 'xxx'}, 
              {'A' :float('nan'), 'B' : 'ssss'}]
      

      any(i!=i for i in chain.from_iterable(map(dict.values, data)))
      # True
      

      或遵循代码中的逻辑:

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

      【讨论】:

        猜你喜欢
        • 2023-03-20
        • 2020-09-23
        • 2018-05-01
        • 1970-01-01
        • 2013-08-22
        • 1970-01-01
        • 2015-04-02
        • 1970-01-01
        • 2023-03-31
        相关资源
        最近更新 更多