У меня есть список [5, 90, 23, 12, 34, 89] и т.д., где каждые два значения должны быть (ранжированным) списком в словаре.
Таким образом, приведенный выше список станет {1: [5, 90], 2: [23, 12], 3: [34, 89]} и т.д. Я подошел вплотную со списком, но не взломал его, Я пробовал:
my_list = [5, 90, 23, 12, 34, 89]
my_dict = dict((i+1, [my_list[i], my_list[i+1]]) for i in xrange(0, len(my_list)/2))
Что работает для первого ключа, но все следующие значения отключены одним индексом. Как вы это сделаете?
Вы оставили кратное 2:
dict( (i+1, my_list[2*i : 2*i+2]) for i in xrange(0, len(my_list)/2) )
# ^
Кстати, вы можете сделать это вместо этого (с Python ≥2.6 или Python ≥3.0):
>>> it = iter(my_list)
>>> dict(enumerate(zip(it, it), start=1))
{1: (5, 90), 2: (23, 12), 3: (34, 89)}
(конечно, запомните используйте itertools.izip
вместо zip
в Python 2.x)