Другой эффективный способ - использовать iter
:
>>> l = [1, 7, 2, 4, 3, 2, 4, 1, 4, 3]
>>> it = iter(l)
>>> [{x:y} for x,y in zip(it, it)]
[{1: 7}, {2: 4}, {3: 2}, {4: 1}, {4: 3}]
Или используйте itertools.islice
для эффективной итерации и без дополнительных затрат памяти:
[{k: v} for k, v in zip(islice(l, 0, None, 2), islice(l, 1, None, 2))]