我正在寻找一种方法来检查dict是否包含在另一个中:
big = {"result": {"code": "1000", "msg" : "oh yeah"} }
small = {"result": {"code": "1000"}}
test(small, big) # should be True ( small <= big )
由于&#34;结果&#34;的键/对是另一个字典,stackoverflow中的先前答案低于 FAIL ,并且没有解决问题(它们仅适用于更简单的dicts)。此外,该值可以是列表。我想在一般的JSON模型中得到答案。
Python: Check if one dictionary is a subset of another larger dictionary
答案 0 :(得分:0)
因为您似乎正在定义&#34;包含在&#34;递归地 - 即如果较小的dict中的每个键都存在于较大的dict中,则dict包含在另一个中,并且它们要么具有相同的值,要么较小的值包含在&#34;中。较大的 - 递归是解决问题的明显选择。
尝试这样的事情:
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