Функция, которая создает генератор потока для данного итерируемого объекта

Есть функция; она создает генератор потока для данного итерируемого объекта, его элементы содержат позицию и значение и отсортированы по порядку появления. Генератор потока должен быть равен исходному потоку (без позиции), но пробелы заполнены нулями:

gen = gen_stream (9, [(4,111), (7,12)])

list (gen) [0, 0, 0, 0, 111, 0, 0, 12, 0] # первый элемент имеет нулевой индекс, поэтому 111 находится на пятой позиции, 12 - на 8-й позиции, т.е. 2 значащих элемента имеют индексы 4 и 7, все остальные элементы заполнены нулями
from itertools import count

def gen_stream(total, sorted_iterable, extractor=lambda x: x):
    sorted_iterable = dict(map(extractor, sorted_iterable))
    iterable = count() if total is None else range(total)
    for i in iterable:
        yield sorted_iterable.get(i, 0)

#gen = gen_stream(9,[(4,111),(7,12)])
#list(gen)

Вот что выводит:

[0, 0, 0, 0, 111, 0, 0, 12, 0]

Теперь вопрос: Как сделать задачу, не преобразуя iterable в dictionary, как я понял, это тут

sorted_iterable = dict(map(extractor, sorted_iterable))

Ответы (0 шт):