Как с помощью функции сравнить два словаря
documents = [
{"type": "passport", "number": "2207 876234", "name": "Василий Гупкин"},
{"type": "invoice", "number": "11-2", "name": "Геннадий Покемонов"},
{"type": "insurance", "number": "10006", "name": "Аристарх Павлов"}
]
directories = {
'1': ['2207 876234', '11-2', '5455 028765'],
'2': ['10006'],
'3': []
}
Есть два словаря, По заданию над написать функцию которая будет сравнивать значение и если значение из первого словаря совпадает с тем что во втором слваре, надо вывести ключ из второго словаря.
То есть 'number' : '10006' - из первого словаря
И во втором словаре есть это значение, в ключе '2', значит и выводим 2
Хоть убейте даже начать писать функцию не могу(мыслей даже нет), если не кодом, то хотя бы натолкните на мысль
Ответы (1 шт):
Держите логику "в лоб". Функцию опишите уже сами, основывясь или переработав мою логику.
Первое, словарь documents нам не нужен как словарь, а только данные, которые находятся под ключами. Поэтому сдеалем список, который содержит данные значения и сохраним в переменную result
>>> documents = [
... {"type": "passport", "number": "2207 876234", "name": "Василий Гупкин"},
... {"type": "invoice", "number": "11-2", "name": "Геннадий Покемонов"},
... {"type": "insurance", "number": "10006", "name": "Аристарх Павлов"}
... ]
>>> directories = {
... '1': ['2207 876234', '11-2', '5455 028765'],
... '2': ['10006'],
... '3': []
... }
>>> result = []
>>> for i in documents:
... for key, value in i.items():
... result.append(value)
...
>>> result
['passport', '2207 876234', 'Василий Гупкин', 'invoice', '11-2', 'Геннадий Покемонов', 'insurance', '10006', 'Аристарх Павлов']
С этой переменной и будем сравнивать.
Теперь пробежимся по второму словарю, будем брать каждое значение, которое находится в списке под каждым ключом и спрашивать: "Есть ли такое значение в переменной result".
>>> for key, value in directories.items():
... for _ in value:
... if _ in result:
... print(key)
...
1
1
2
На выходе у нас ключи, которые содержат совпадения.