我有一个列表 [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)}
(当然,记住 use itertools.izip 而不是 Python 2.x 中的 zip)
