2016-08-23 130 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

這就行了。謝謝。現在我將開始閱讀這個功能。 –

相關問題