Ian*_*Ian 1 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))
Run Code Online (Sandbox Code Playgroud)
这适用于第一个键,但所有后续值都由一个索引关闭.你会怎么做?
你留下了2的倍数:
dict( (i+1, my_list[2*i : 2*i+2]) for i in xrange(0, len(my_list)/2) )
# ^
Run Code Online (Sandbox Code Playgroud)
顺便说一下,你可以这样做(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)}
Run Code Online (Sandbox Code Playgroud)
(当然,记得使用itertools.izip而不是zipPython 2.x)