Python 检查字典是否是其他字典的一部分
Python check if dict is part of other 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()
它会return根据你的条件判断真假
如果字典有列表:
from operator import *
g = itemgetter(*dict1)
print(dict1.keys() <= dict2.keys() and g(dict1) == g(dict2))
你可以做到
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)!=[])
我会使用 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
EDIT2:如果字典有一个列表值:
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
我有 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()
它会return根据你的条件判断真假
如果字典有列表:
from operator import *
g = itemgetter(*dict1)
print(dict1.keys() <= dict2.keys() and g(dict1) == g(dict2))
你可以做到
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)!=[])
我会使用 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
EDIT2:如果字典有一个列表值:
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