Ответ 1
Кортежи являются итерабельными. Вы можете использовать zip
для объединения двух или более итераций в кортежи из двух или более элементов.
Словарь может быть построен из итерабельного из 2-х кортежей, поэтому:
# v values
dict(zip(y,x))
# ^ keys
Это генерирует:
>>> dict(zip(y,x))
{'c': 3, 'a': 1, 'b': 2}
Обратите внимание, что если два итерабеля имеют разную длину, то zip
остановится с момента исчерпания одного из кортежей.
Вы можете - как @Wondercricket - использовать izip_longest
(или zip_longest
в python-3.x) с fillvalue
: значение, которое используется, когда один из итераций исчерпан:
from itertools import izip_longest
dict(izip_longest(y,x,fillvalue=''))
Итак, если ключевой итерируемый сначала исчерпается, все оставшиеся значения будут отображаться здесь на пустой строке (так что будет сохранен только последний). Если значение iterable исчерпано первым, все остальные ключи будут отображаться в пустой строке.