2016-08-23 3 views
1

목록의 원래 요소를 키로 사용하여 목록의 모든 n 번째 요소에서 사전을 만들려고합니다. 그래서 예를 들면 : 리스트의 사전 파이썬 목록의 n 번째 항목

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_items([(0, 1), (1, 3), (2, 5), (3, 7), (4, 9)]) 

을 제공하는

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

을 시도하지만 난 유지하려는 것을 원하지 않는다 사전을 만들 때 원래 색인. 이 작업을 수행하는 가장 좋은 방법은 무엇입니까?

나는 다음과 같은 출력을 원하는

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

이렇게합니다. 감사. 이제이 기능에 대해 알아 보겠습니다. –

관련 문제