Skip to main content
 首页 » 编程设计

python之使用列表理解创建排名字典

2025年05月04日16lidabo

我有一个列表 [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)