我正试图通过从模块调用方法来从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
有人可以帮忙解决问题所在吗?
答案 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__))
混淆可能来自需要复制字典键和值,以避免在字典上进行迭代时删除字典上的项目(这可能在此处以错误的级别进行了处理,然后在适当的级别进行了处理,但是首先副本未被删除)