【问题标题】:How do I delete nan-valued keys from one dictionary into another dictionary如何将一个字典中的 nan 值键删除到另一个字典中
【发布时间】:2022-01-20 22:48:01
【问题描述】:

我有这本词典:

d = {4: {0: [12], 1: [194]}, 8: {0: [222], 1: nan}, 18: {0: [60], 1: nan},
      19: {0: [128], 1: nan}, 21: {0: [54], 1: nan}}

输出应如下所示:

  d = {4: {0: [12], 1: [194]}, 8: {0: [222] }, 
       18: {0: [60] }, 19: {0: [128]}, 21: {0: [54]}}

【问题讨论】:

  • 不清楚您所说的into another dictionary 是什么意思。如果您添加了您想要的结果,将会有所帮助。
  • @Mark 好的,我写了想要的输出。
  • 非常感谢,这正是我所需要的! @马克

标签: python list dictionary


【解决方案1】:

您可以递归地将字典传递给一个函数,该函数会过滤掉带有nan 值的键。例如:

from math import nan

d = {4: {0: [12], 1: [194]}, 8: {0: [222], 1: nan}, 18: {0: [60], 1: nan},
     19: {0: [128], 1: nan}, 21: {0: [54], 1: nan}}

def clean_nan(d):
    if isinstance(d, dict):
        return {k: clean_nan(v) for k, v in d.items() if v == v}
    return d

clean_nan(d)

给出结果:

{4: {0: [12], 1: [194]},
 8: {0: [222]},
 18: {0: [60]},
 19: {0: [128]},
 21: {0: [54]}}

假设列表不包含nan,但如果包含,则很容易添加另一个子句来过滤它们。

【讨论】:

    猜你喜欢
    • 2017-11-06
    • 1970-01-01
    • 2021-11-18
    • 2017-07-06
    • 1970-01-01
    • 2017-07-07
    • 1970-01-01
    • 2022-08-08
    • 1970-01-01
    相关资源
    最近更新 更多