查找dict是否包含在另一个中(新版本)

时间:2017-05-22 19:39:48

标签: python json

我正在寻找一种方法来检查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

Test if dict contained in dict

1 个答案:

答案 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