Создать ранжированный диктат со списком - PullRequest
1 голос
/ 09 сентября 2010

У меня есть список [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))

, который работает для первого ключа, но все следующие значения отключены на один индекс.Как бы вы это сделали?

1 Ответ

6 голосов
/ 09 сентября 2010

Вы оставили кратное 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)

...