Python удалить пустые и нулевые ключи не влияет на мой объект

1

Я пытаюсь удалить пустые и пустые ключи из моего объекта 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 

Может кто-нибудь помочь в штрафах, где это пошло не так?

  • 4
    Ваше return находится внутри for цикла. Это должно быть после этого.
  • 0
    также вам нужно return del_none(value) classic dupe
Показать ещё 3 комментария
Теги:
null

1 ответ

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__))

Путаница, вероятно, возникает из-за необходимости скопировать словарные ключи + значения, чтобы избежать удаления элементов на dict во время итерации на нем (что, вероятно, было обработано здесь, на неправильном уровне, а затем обработано на соответствующем уровне, но первая копия не была удален)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню