我需要在可能深度嵌套的字典中识别任何None
值,该字典也可以包含列表。下面是我现在存在的代码。它有效,但它只返回与None
值直接关联的键的名称。
我想让整个键列表指向None
(例如nested["top_key"]["next_key"]["final_key"]
)
def search_for_None(nested):
for key, value in nested.items():
if isinstance(value, dict):
search_for_None(value)
elif isinstance(value, list):
for item in value:
if isinstance(item, dict):
search_for_None(item)
else:
if value is None:
logging.error("Missing value for key '{0}'".format(key))
答案 0 :(得分:0)
您需要传递路径以及递归调用。像下面的东西
def search_for_None(nested, path):
for key, value in nested.items():
dict_path = f"{path}[{key!r}]"
if isinstance(value, dict):
search_for_None(value, dict_path)
elif isinstance(value, list):
for index, item in enumerate(value):
list_path = f"{dict_path}[{index!r}]"
if isinstance(item, dict):
search_for_None(item, list_path)
else:
if value is None:
logging.error("Missing value for key '{0}'".format(dict_path))
path参数应该是一个字符串(例如“嵌套”)
另请注意,您发布的代码(以及我的代码)在列表中找不到None值(例如{“a”:[None]}),因为没有检查该条件。