我有一个列表[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))
适用于第一个键,但所有后续值都由一个索引关闭。你会怎么做?
答案 0 :(得分:6)
你留下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)}
(当然,请记住{2.}}而不是Python 2.x中的zip