如何检查dict大陆列表和不同格式的dict中是否所有值都不是None



我想检查dict是否包含值None知道格式不是唯一的,它可以包含dict内容其他dict和其他列表包含dict您可以看到示例:

{
"first_name": "test",
"last_name": "test",
"cars": [
{"mark": "test", "type": "12"},
{"mark": "test2", "type": "7"},
],
"date_created": "2022-05-07",
"invoice_info": {
"price": 1233,
"currency": "EUR",
"date": [
{"date_1": "2022-05-07", "info": {"comment": "test", "place": "France"}},
{"date_2": "2022-06-12", "info": {"comment": None, "place": "France"}},
]
}
}

您必须使用递归函数。如果函数接收到字典或列表,它会循环遍历这些值,否则会将该值与None进行比较。这里有一个快速的例子:

data = {"foo": "bar"}
def includes_none(node):
if isinstance(node, dict):
for _, v in node.items():
if includes_none(v):
return True
elif isinstance(node, list):
for v in node:
if includes_none(v):
return True
else:
if node is None:
return True
return False
print(includes_none(data))

此处的最小代码;(如果在dict或列表值(递归(中找到None,则返回True

def seekNone(node):
if (isinstance(node, dict) or isinstance(node, list)):
try:
node = node.values()
except: 
pass
for val in node:
if seekNone(val):
return True
return node is None

print(seekNone(your_dict_here))

最新更新