Как сравнить два словаря python и узнать каких ключей нет в том или ином словаре
У меня есть два словаря python:
pp = {'title': 'jr', 'description': '64', 'price': '3'}
cc = {'python': 'dede', 'key:': '#789', 'title': 'jr', 'description': '64', 'price': '3'}
Мне необходимо написать код, который мог бы отображать ключ которого нет в другом словаре, как это можно сделать?
В качестве результата должно получиться:
"key ['python'] not in dict ['cc']" # написал для примера
Ответы (2 шт):
Автор решения: gil9red
→ Ссылка
Можно через множества получить разницу в ключах словарей
Пример:
d1 = {'title': 'jr', 'description': '64', 'price': '3'}
d2 = {'python': 'dede', 'key:': '#789', 'title': 'jr', 'description': '64', 'price': '3'}
result = set(d1).difference(set(d2))
if result:
print(f'В d2 нет ключей d1: {result}')
else:
print('В d1 все ключи d2')
result = set(d2).difference(set(d1))
if result:
print(f'В d1 нет ключей d2: {result}')
else:
print('В d2 все ключи d1')
Результат:
В d1 все ключи d2
В d1 нет ключей d2: {'key:', 'python'}
UPD.
Вместо difference можно использовать оператор -, пример:
result = set(d1) - set(d2)
Автор решения: CrazyElf
→ Ссылка
Ключи словаря - это множество. Множества можно вычитать:
a = {'title': 'jr', 'description': '64', 'price': '3'}
b = {'python': 'dede', 'key:': '#789', 'title': 'jr', 'description': '64', 'price': '3'}
print(a.keys()-b.keys())
print(b.keys()-a.keys())
Вывод:
set()
{'python', 'key:'}
Т.е. в данном случае множество ключей первого словаря целиком есть во втором словаре.
А вот во втором словаре не хватает двух ключей относительно первого словаря.