Как проверить, присутствует ли пара ключ-значение в словаре?
a = {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}
b = {'a': 1, 'c': 3}
Проверить наличие b в a, и на выходе значение типа bool
Пробовал такое решение:
b.items() <= a.items()
Так же возникла проблема с словарем такого типа:
a = {'a': 1, 'b': [{'a1': 1,'b2': 2}], 'c': 3, 'd': 4, 'e': 5}
b = {'c': 3, 'b': [{'a1': 1,'b2': 2}]}
Но его проверить таким способом не получится
b.items() <= a.items()
Ищу другие решения данной проверки
Ответы (4 шт):
Автор решения: S. Nick
→ Ссылка
Попробуйте так:
a = {'a': 1, 'b': 2,'c': 3, 'd': 4, 'e': 5}
b = {'a': 1, 'c': 3}
if len(b.items() & a.items()) == len(b):
print(True, len(b.items() & a.items()), b.items() & a.items())
else:
print(False)
Автор решения: n1tr0xs
→ Ссылка
# 1
b.items() <= a.items()
# 2
b.items() in a.items()
# 3
flag = True
for key in b:
try:
if a[key] != b[key]:
flag = False
except KeyError:
flag = False
Автор решения: Namerek
→ Ссылка
a={'a':1,'b':2,'c':3,'d':4,'e':5}
b={'a':1,'c':3}
def check(items: tuple):
return items in a.items()
print(all([*map(check, b.items())]))
Ну или без заморочек с функцией:
a={'a':1,'b':2,'c':3,'d':4,'e':5}
b={'a':1,'c':3}
print(all([item in a.items() for item in b.items()]))
Автор решения: John Solncev
→ Ссылка
def check(a, b):
if b.items() <= a.items():
try:
for key in b:
if b[key] != a[key]:
return False
except KeyError:
return False
else:
return True
else:
return False
P.S. немного отредактированный ответ n1tr0xs