Сравнение словарей в Python: подсчет равных пар ключ-значение
Пройдите тест, узнайте какой профессии подходите
Быстрый ответ
Чтобы определить число пар (ключ, значение)
, совпадающих в двух словарях, примените следующий код:
совпадения = sum(k in dict2 and dict1[k] == dict2[k] for k in dict1)
Таким образом, мы быстро определяем количество ключей и значений, которые имеются в обоих словарях.
Детальное рассмотрение сравнения словарей
Публичные элементы в словарях
Чтобы определить пары ключ-значение, которые совпадают в обоих словарях, можно использовать генератор словарей:
общие_элементы = {k: dict1[k] for k in dict1 if k in dict2 and dict1[k] == dict2[k]}
Словарь общие_элементы
будет содержать только те ключи, которые присутствуют как в dict1
, так и в dict2
, с идентичными значениями.
Выделение общих ключей
Для поиска ключей, присутствующих в обоих словарях, можно воспользоваться операцией пересечения множеств:
общие_ключи = dict1.keys() & dict2.keys()
Оператор &
помогает найти общие ключи в двух словарях.
Определение добавленных или удаленных ключей
Для обнаружения изменений в наборе ключей в двух словарях можно применить операцию разности множеств:
добавленные_ключи = dict2.keys() – dict1.keys()
удаленные_ключи = dict1.keys() – dict2.keys()
Такой подход позволит отследить, какие ключи были добавлены или удалены.
Сравнение вложенных словарей
Если требуется сопоставить словари, имеющие сложную структуру, можно обратиться к библиотеке deepdiff
:
from deepdiff import DeepDiff
разница = DeepDiff(dict1, dict2)
Для удобного отображения результата применяйте функции json.dumps()
или pprint.pprint()
.
Визуализация
Рассмотрим пример с двуми словарями:
dict1 = {'color': 'red', 'size': 'M', 'pattern': 'stripes'}
dict2 = {'color': 'red', 'size': 'L', 'pattern': 'stripes'}
Соответствия 🧦
dict1 🔍 dict2: [('color', 'red'), ('pattern', 'stripes')]
# 2 из 3 атрибутов совпадают!
Расшифровываем трюки
Понимание механизма сравнения
Оператор ==
позволяет осуществить проверку, соответствуют ли порядок и содержание элементов в двух словарях.
Расширенное сравнение
Объединение словарей
Для создания словаря на основе списков ключей и значений можно использовать функцию zip
:
dict3 = dict(zip(keys, values1))
dict4 = dict(zip(keys, values2))
Особенности уникальных ключей
Ключи словаря должны быть правильными идентификаторами; в противном случае могут возникнуть синтаксические ошибки:
dict_chars = {k.strip("$"): v for k, v in dict1.items()}
Расширенные концепции сравнения
Критерии сравнения можно усложнить, учитывая индивидуальные пороги и методы оценки элементов, не совпадающих абсолютно точно.