Как проверить, присутствует ли пара ключ-значение в словаре?

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

→ Ссылка