Сравнение двух словарей и вывод пары ключей в Python
У меня есть два словаря:
a= { "fruits": ["apple", "banana"] }
b = { "fruits": ["apple", "carrot"]}
Теперь я хочу напечатать различия. И я хочу в этом случае вывод должен быть
{'fruits' : 'carrot'}
также, если ключи изменились - предположим, изменился ли на
b = { "toy": "car"}
тогда вывод должен быть
{ "toy": "car"}
Заранее спасибо.
2 ответа
Это похоже на dict.viewitems
может быть хорошим методом, чтобы посмотреть. Это позволит нам легко увидеть, какие пары ключ / значение находятся в a
которые не в b
:
>>> a = { 'fruits': 'apple' 'grape', 'vegetables': 'carrot'}
>>> b = { 'fruits': 'banana'}
>>> a.viewitems() - b.viewitems() # python3.x -- Just use `items` :)
set([('fruits', 'applegrape'), ('vegetables', 'carrot')])
>>> b['vegetables'] = 'carrot' # add the correct vegetable to `b` and try again.
>>> a.viewitems() - b.viewitems()
set([('fruits', 'applegrape')])
Мы даже можем получить представление о том, какова разница на самом деле, если использовать симметричную разницу:
>>> a.viewitems() ^ b.viewitems()
set([('fruits', 'applegrape'), ('fruits', 'banana')])
Вы также можете сделать что-то подобное с viewkeys
(keys
на python3.x), если вас интересует только то, какие ключи были изменены.
Что касается различий, вы можете использовать словарь понимания только для фильтрации b
ключи, которые находятся в a
:
>>> {key: b[key] for key in b if key in a}
{'fruits': 'banana'}
Ко второй части, "если ключи изменились", {'froot'}
неверный словарь, а ключи неизменны. Так что это невозможно.