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

问题描述

我有 2 个具有相同键的字典

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

现在我想检查 dict1 是否与 dict2 具有相同的键和值 我喜欢避免做循环并检查 dict1 中的每个键和值是否在 dict 2 中 有没有pythonic优雅的方法来做到这一点?
更新
dict1 的两个键都在 dict 2 中,如果只有 1 个匹配则为 false

解决方法

你可以这样做

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

它会根据你的条件返回真或假

如果字典有列表:

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,"path": "cc"}

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

打印:

True

EDIT2:如果 dict 有一个列表值:

from operator import itemgetter

dict1 = {"version": 222,"name_app": ["a","b","c"]}
dict2 = {"version": 222,"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)!=[])