Python检查dict是否是其他dict的一部分



我有两个具有相同密钥的dict

dict1 = {'version': 222,'name_app': 'foo1'}
dict2 = {'version': 222,'name_app': 'foo1','dir': 'c','path': 'cc'}

现在我想检查dict1是否与dict2具有相同的键和值我喜欢避免循环,并检查dict1中的每个键和值是否在dict2中有什么蟒蛇般优雅的方式可以做到这一点吗
UPDATE
dict1的两个键大多在dict 2中,如果只有1个匹配,则为false

你可以像这样做

set(dict1.items())-set(dict2.items())== set()

它将根据您的条件返回true或false

如果dictonaries有列表:

from operator import *
g = itemgetter(*dict1)
print(dict1.keys() <= dict2.keys() and g(dict1) == g(dict2))

我会使用operator.itemgetter:

from operator import itemgetter
dict1 = {"version": 222, "name_app": "foo1"}
dict2 = {"version": 222, "name_app": "foo1", "dir": "c", "path": "cc"}
g = itemgetter(*dict1)
print(g(dict1) == g(dict2))

打印:

True

编辑:dict1的所有键必须匹配:

from operator import itemgetter
dict1 = {"version": 222, "name_app": "foo1"}
dict2 = {"version": 222, "name_app": "foo1", "dir": "c", "path": "cc"}
g = itemgetter(*dict1)
print(dict1.keys() <= dict2.keys() and g(dict1) == g(dict2))

打印:

True

编辑2:如果dict有一个列表值:

from operator import itemgetter
dict1 = {"version": 222, "name_app": ["a", "b", "c"]}
dict2 = {"version": 222, "name_app": ["a", "b", "c"], "dir": "c", "path": "cc"}
g = itemgetter(*dict1)
print(dict1.keys() <= dict2.keys() and g(dict1) == g(dict2))

打印:

True

您可以执行此

dict1 = {'version': 222,'name_app': 'foo1'}
dict2 = {'version': 222,'name_app': 'for','dir': 'c','path': 'cc'}
common=set(dict1.items())-set(dict2.items())
print(list(common)!=[])

最新更新