Для всех, кого это интересует, вот еще один способ избавиться от None value. Вместо удаления ключа я изменяю значение None
с помощью заполнителя для того же ключа.
Один из вариантов использования - Spark RDD.map
для JSON с нулевым значением.
def filter_null(data, placeholder="[spark]nonexists"):
# Replace all `None` in the dict to the value of `placeholder`
return dict((k, filter_null(v, placeholder) if isinstance(v, dict) else v if v
is not None else placeholder) for k, v in data.iteritems())
Пример вывода:
>>> filter_null({'a':None,'b':"nul", "c": {'a':None,'b':"nul"}})
{'a': '[spark]nonexists', 'c': {'a': '[spark]nonexists', 'b': 'nul'}, 'b': 'nul'}
Для python3 измените iteritems()
на items()
.