Python: понимание различий между двумя словарями - PullRequest
1 голос
/ 24 октября 2019

Я пытаюсь найти способ получить разницу между двумя словарями, сравнивая одни и те же ключи и значения. Это слово и вхождения.

Скажем, у меня есть два словаря:

Dict_1 = {' Chicago ': 3, ' Washington ': 5, ' LA ': 22, ' Boston ': 8, ' Seattle ': 0}
Dict_2 = {' Chicago ': 4, ' Washington ': 9, ' LA ': 26, ' Boston ': 12, ' Seattle ': 2}

Итак, что мне после, так это разница вхождений, показывающая различия в двух словарях.

[3-4, 5-9, 22-26, 8-12, 0-2] or like this [-1, -4, -4, -4, -2]

Затем я использую эти различия для расчетов. Я не очень опытен в использовании словарей, поэтому любая помощь приветствуется.

Возможно, мне также придется учитывать один словарь, не имеющий одинаковых ключей. EG

Dict_1 = {' Chicago ': 3, ' Washington ': 5, ' LA ': 22, ' Boston ': 8, ' Seattle ': 0, ' Detroit ': 3}
Dict_2 = {' Chicago ': 4, ' Washington ': 9, ' LA ': 26, ' Boston ': 12, ' Seattle ': 2}

В словаре 1 есть Детройт, запись, которой нет в словаре 2. Я все еще хочу получить разницу, которая будет равна 3, так как Dict 2 имеет 0 вхождений Детройта.

1 Ответ

2 голосов
/ 24 октября 2019

Вы можете использовать словарь для этого:

diffdict = {
    key: Dict_1.get(key, 0) - Dict_2.get(key, 0)
    for key in Dict_1.keys() | Dict_2.keys()
}

Здесь я использую значение по умолчанию, равное нулю, для отсутствующих ключей для обоих словарей, то есть, если значение не доступно в Dict_1, но это в Dict_2, его значение будет -Dict_2[key]

Полученный diffdict будет выглядеть так:

>>> diffdict
{' Boston ': -4, ' Washington ': -4, ' LA ': -4, ' Chicago ': -1, ' Seattle ': -2}
...