2016-08-23 128 views
1

我想创建一个列表的每个第n个元素与列表的原始索引作为关键字的字典。因此,例如:列表中的第n个项目到字典python

l = [1,2,3,4,5,6,7,8,9] 

现在运行

dict(enumerate(l)).items() 

给我:

dict_items([(0, 1), (1, 2), (2, 3), (3, 4), (4, 5), (5, 6), (6, 7), (7, 8), (8, 9)]) 

这就是我想要的。然而,问题开始时,我想现在选择从L-每一秒值要做到这一点,所以我尽量

dict(enumerate(l[::2])).items() 

这给了我

dict_items([(0, 1), (1, 3), (2, 5), (3, 7), (4, 9)]) 

,但我不希望这样,我希望保留制作字典时的原始索引。做这个的最好方式是什么?

我想下面的输出

dict_items([(0, 1), (2, 3), (4, 5), (6, 7), (8, 9)]) 
enumerate()对象

回答

4

使用itertools.islice()

from itertools import islice 

dict(islice(enumerate(l), None, None, 2)).items() 

islice()让你在任何迭代切片;上述利用每一个第二元件:

>>> from itertools import islice 
>>> l = [1,2,3,4,5,6,7,8,9] 
>>> dict(islice(enumerate(l), None, None, 2)).items() 
dict_items([(0, 1), (8, 9), (2, 3), (4, 5), (6, 7)]) 

(请注意,输出为预期的,但顺序一如既往determined by the hash table)。

+0

这就行了。谢谢。现在我将开始阅读这个功能。 –

相关问题