使用列表理解创建排名的dict

时间:2010-09-09 17:31:57

标签: python list-comprehension

我有一个列表[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 个答案:

答案 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