当dict2包含与dict1相同的键和值时,dict1是dict2的子集

时间:2015-04-25 23:37:48

标签: python-3.x

例如: 如果a = dict(a = 1,b = 2)b = dict(a = 1,b = 2,c = 3) 当dict2包含与dict1相同的键和值时,dict1是dict2的子集

最简单的方法是什么?

这是我到目前为止所拥有的。是否有任何其他方法返回一个bool,确定dict1是否是dict2的子集?

condition = True
for a, b in dict1.items():
    if dict2[a] = b:
        condition = False
return condition

2 个答案:

答案 0 :(得分:0)

我认为最简单的方法是利用集合的简单性。您必须将dicts转换为元组集。为此,您必须首先将dicts转换为元组列表,然后创建集合。之后,您将能够使用方法set.issubset:

def issubset(dict1, dict2):
    # dict -> list
    list1 = list(dict1.items())
    list2 = list(dict2.items())

    # list -> set
    set1 = set(list1)
    set2 = set(list2)

    return set1.issubset(set2)

答案 1 :(得分:0)

只要询问all(x in b and a[x]==b[x] for x in a),如果subict表示与相同值相关联的相同键。它会停在第一个区别。