Я пытаюсь создать функцию в python, которая возвращает значения двух словарей, ЕСЛИ конкретное значение из dict1
соответствует определенному значению dict2
. Моя функция выглядит так:
def dict_matcher(dict1, dict2, item1_pos, item2_pos):
"""Uses a tuple value from dict1 to search for a matching tuple value in dict2. If a match is found, the other values from dict1 and dict2 are returned."""
for item1 in dict1:
for item2 in dict2:
if dict1[item1][item1_pos] == dict2[item2][item2_pos]:
yield(dict1[item1][2], dict2[item2][6])
Я использую dict_matcher
вот так:
matches = [myresults for myresults in dict_matcher(dict1, dict2 , 2, 6)]
print(matches)
Когда я печатаю matches
, я получаю список правильно совпадающих значений dict1 и dict2, например:
[('frog', 'frog'), ('spider', 'spider'), ('cricket', 'cricket'), ('hampster', 'hampster')]
Как я могу добавить в эту функцию переменные аргументы, чтобы, помимо вывода совпадающих значений из каждого словаря, я мог также печатать другие значения каждого элемента словаря в случаях, когда dict1[item1][2] and dict2[item2][6]
совпадают? Могу ли я использовать *args? Спасибо за помощь.
РЕДАКТИРОВАТЬ: Хорошо, кажется, есть некоторая путаница в отношении того, что я пытаюсь сделать, поэтому позвольте мне попробовать другой пример.
dict1 = {1: ('frog', 'green'), 2: ('spider', 'blue'), 3: ('cricket', 'red')}
dict2 = {a: ('frog', 12.34), b: ('ape', 22.33), c: ('lemur', 90.21)}
dict_matcher(dict1, dict2, 0, 0)
найдет совпадающие значения для значения [0] из dict1 и значения [0] из dict2. В этом случае единственным совпадением является «лягушка». Моя функция выше делает это. Что я пытаюсь сделать, так это расширить функцию, чтобы иметь возможность распечатывать другие значения из элементов словаря, где dict1[value][0] == dict2[value][0]
я хочу, чтобы это было указано в аргументе функции.
yield(dict1[item1][item1_pos], dict2[item2][item2_pos])
в начальном блоке кода? - person andrew cooke   schedule 11.08.2011