[英]find if a dict is contained in another (new version)
我正在寻找一种方法来检查另一个字典中是否包含字典:
big = {"result": {"code": "1000", "msg" : "oh yeah"} }
small = {"result": {"code": "1000"}}
test(small, big) # should be True ( small <= big )
由于“结果”的键/对是另一个指令,因此stackoverflow中的先前答案在FAIL下 ,并且不能解决问题(它们仅适用于较简单的指令)。 同样,该值可以是列表。 我想要通用JSON模型中的答案。
由于您似乎是在递归地定义“包含在”中,即,如果较小的dict中的每个键都存在于较大的字典中,并且它们的值相同或较小的值“包含在”较大的字典中,则该字典包含在另一个字典中-递归是解决问题的明显选择。
尝试这样的事情:
def is_subset(small, large):
if isinstance(small, dict) and isinstance(large, dict):
for key in small.keys():
if not key in large:
return False
elif not is_subset(small[key], large[key]):
return False
return True
elif isinstance(small, list) and isinstance(large, list):
for s_item in small:
if not any(is_subset(s_item, l_item) for l_item in large):
return False
return True
else:
return small == large
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.