Это вариант генератора для получения кортежей пробелов из заархивированных итераций.
Я хочу разработать функцию генератора, которая:
- Принимает произвольное количество итераций
- Каждая итерация ввода дает ноль или более (k, v), k не обязательно уникально
- Предполагается, что входные ключи отсортированы в порядке возрастания.
- Результат должен дать
(k, (v1, v2, ...))
- Ключи вывода являются уникальными и отображаются в том же порядке, что и ввод
- Количество выходных кортежей равно количеству уникальных ключей во входных данных.
- Выходные значения соответствуют всем входным кортежам, соответствующим выходному ключу.
- Поскольку входы и выходы потенциально велики, их следует рассматривать как итерации, а не загружать как словарь или список в памяти.
В качестве примера,
i1 = ((2, 'a'), (3, 'b'), (5, 'c'))
i2 = ((1, 'd'), (2, 'e'), (3, 'f'))
i3 = ((1, 'g'), (3, 'h'), (5, 'i'), (5, 'j'))
result = sorted_merge(i1, i2, i3)
print [result]
Это выведет:
[(1, ('d', 'g')), (2, ('a', 'e')), (3, ('b', 'f', 'h')), (5, ('c', 'i', 'j'))]
Если я не ошибаюсь, в стандартной библиотеке Python нет ничего, что могло бы сделать это из коробки.