У меня есть два выхода из моего картографа:
yield (destination,{'origin':origin,'count':count})
yield (origin,{'destination':destination,'count':count})
Это дает мне вывод, подобный следующему:
('United States', {'origin': 'Romania', 'count': '1'})
('Romania', {'count': '1', 'destination': 'United States'})
('United States', {'origin': 'Ireland', 'count': '264'})
('Ireland', {'count': '264', 'destination': 'United States'})
('United States', {'origin': 'India', 'count': '69'})
('India', {'count': '69', 'destination': 'United States'})
('Egypt', {'origin': 'United States', 'count': '24'})
('United States', {'count': '24', 'destination': 'Egypt'})
('Equatorial Guinea', {'origin': 'United States', 'count': '1'})
('United States', {'count': '1', 'destination': 'Equatorial Guinea'})
('United States', {'origin': 'Singapore', 'count': '25'})
('Singapore', {'count': '25', 'destination': 'United States'})
Теперь мне нужно написать редуктор, где я могу разделитьвышеупомянутые данные в две группы и итерации, используя два цикла for.Идея состоит в том, чтобы найти в сумме все возможные рейсы, которые можно совершить за два прыжка
Например:
Чтобы добраться из Румынии в Египет.Мы берем Romania -> United States and United States -> Egypt. The total possible flights would then be 1*24
Из того, что я понимаю, мне нужно дважды перебрать все значения и найти ключи, где Destination of 1 == origin of another.
До сих пор, я думаю, что мне нужно создать двагруппы: g1 (для всех ключей на основе источника) и g2 (для всех ключей на основе назначения)
, а затем итерация по каждой группе, находящая такие g1.destination == g2.origin
.
Я иду в правильном направлении?Если так, то как бы такая функция выглядела в редукторе?Честно говоря, я не могу понять, как мне его кодировать.