2013-05-25 2 views
1

이것은 매우 유용하다고 생각하여 공유하고 싶은 질문과 답변입니다. 다른 키를 사용하여 사전에 액세스 할 수 있다고 가정합니다. I는 해당 목록의 위치 1를 사용 a의 모든 항목에 걸쳐 합계를 계산하기 관심사전의 모든 목록 위치 합계

a={} 
a["hello"]=[2,3,4] 
a["bye"]=[0,10,100] 
a["goodbye"]=[2,5,50] 

: 그리고 사전의 각 위치에서 나는 고정 된 길이의 목록을 가지고있다. 예에서 , 나는 합계 싶었 :

내가 (여기에 두 개의 라인으로 분리) 내 한 줄 솔루션리스트 함축을 사용
finalsum=sum([3,10,5]) #-----> 18 

답변

2

키가 전혀 중요하지 않으므로 키를 건너 뛰기 만하면됩니다. 사전인가 반복 할 때

sum(i[1] for i in a.itervalues()) 

또한 보조 노트로, 당신은() a.keys 할 필요가 없습니다, 당신은 단지 for key in a을 말할 수 있으며 키를 사용합니다.

a.values()을 사용하면 dict의 모든 값 목록을 얻을 수 있습니다. 내가 알 수있는 한, 키는 관련이 없습니다. a.itervalues()은 새 목록을 작성하는 대신 iterating으로 작동합니다. 이것과 sum에 대한 인수로 생성자 표현식을 사용하면 관계없는리스트가 생성되지 않습니다.

+0

+1 키를 통해 반복하면 의미가 없습니다. –

+0

@ Ryan Haining :이 버전은 내 방식보다 훨씬 작고 시원합니다. 감사! – lllllll

1

:

elements=[a[pos][1] for pos in a.keys()] #----> [3,5,10] 
finalsum=sum(elements) 

나는이 솔루션 행복 해요 :), 그러나, 다른 어떤 제안?