用 Python 替换字典中的 None 值

在 Python 中替换字典中的 None 值

Replace None values in a Dictionary in Python

在 Python 中替换None字典中的值:

  1. 使用方法的object_pairs_hook关键字参数json.loads()
  2. object_pairs_hook检查调用函数的
    每个值是否为
    None.
  3. 如果是,则替换None为特定的替换值。
主程序
import json person = { 'name': None, 'address': {'country': None, 'city': None, 'street': 'abc 123'}, 'language': 'German', } def replace_none_in_dict(items): replacement = '' return {k: v if v is not None else replacement for k, v in items} json_str = json.dumps(person) person = json.loads(json_str, object_pairs_hook=replace_none_in_dict) # 👇️ {'name': '', 'address': {'country': '', 'city': '', 'street': 'abc 123'}, 'language': 'German'} print(person)
您可以更新函数中的replacement变量以更改替换值。 replace_none_in_dict

如果您有可能具有
的嵌套对象,则
json模块会使事情变得更简单。None

json.dumps方法将 Python 对象转换为 JSON 格式的字符串

json.loads方法将 JSON 字符串解析为本机 Python 对象。

我们将object_pairs_hook关键字参数传递给json.loads()方法并将其设置为函数。

主程序
def replace_none_in_dict(items): replacement = '' return {k: v if v is not None else replacement for k, v in items}

该函数将使用键值对元组列表进行调用,例如
[('country', None), ('city', None), ('street', 'abc 123')].

在我们的函数中,我们简单地检查该值是否存在None并返回它,否则我们返回一个替换值。

如果您的字典不包含嵌套对象,请使用字典理解。

主程序
person = { 'name': None, 'address': None, 'language': 'German', 'country': 'Germany', } # 👇️ change this if you need to update the replacement value replacement = '' employee = { key: value if value is not None else replacement for key, value in person.items() } # 👇️ {'name': '', 'address': '', 'language': 'German', 'country': 'Germany'} print(employee)

dict.items方法返回字典
项((键,值)对)的新视图。

主程序
my_dict = {'id': 1, 'name': 'Alice'} print(my_dict.items()) # 👉️ dict_items([('id', 1), ('name', 'Alice')])

在我们的字典理解中,我们检查每个值是否不是None并返回它,否则我们返回一个替换值。

请注意,如果您的字典包含具有值的嵌套字典,则此方法将不起作用None如果是这种情况,请使用以前的方法。