Python删除空键和空键不会影响我的对象

时间:2018-10-11 12:10:55

标签: python json null

我正试图通过从模块调用方法来从python对象中删除空键和空键。

from file2 import remove_nulls
# initialize object and set attributes
obj.remove_nulls()

在我的remove_nulls()方法中,如果我打印结果对象,则可以观察到已删除了空键和空键,但是从函数返回后,最终对象仍然具有空键和空键。

def remove_null(feature):
    return json.dumps(del_none(feature.__dict__.copy()))

def del_none(d):
  for key, value in list(d.items()):
    if value is None:
        del d[key]
    elif isinstance(value, dict):
        del_none(value)
  return d 

有人可以帮忙解决问题所在吗?

1 个答案:

答案 0 :(得分:0)

副本太多...:

def remove_null(feature):
    return json.dumps(del_none(feature.__dict__.copy()))
del_none应用于对象副本的

,转储正确的“清除”对象,然后返回,使对象保持不变(自创建副本以来)。您可能只需要做:

def remove_null(feature):
    return json.dumps(del_none(feature.__dict__))

混淆可能来自需要复制字典键和值,以避免在字典上进行迭代时删除字典上的项目(这可能在此处以错误的级别进行了处理,然后在适当的级别进行了处理,但是首先副本未被删除)