키가 정수와 매핑되는 사전이 있다고 가정 해 보겠습니다.
d = {'key1': 1,'key2': 14,'key3': 47}
의 값의 합을 반환하는 구문 최소한의 방법이 d
- 즉 62
이 경우는?
키가 정수와 매핑되는 사전이 있다고 가정 해 보겠습니다.
d = {'key1': 1,'key2': 14,'key3': 47}
의 값의 합을 반환하는 구문 최소한의 방법이 d
- 즉 62
이 경우는?
답변:
예상대로 :
sum(d.values())
Python 2.7.12
또한 잘 작동sum(d.values())
d.values()
. Python2에서 새 코드를 작성하더라도을 사용할 수 있습니다 .
파이썬 2에서는 itervalues()
사전의 키 반복자를 반환하는 사전 메소드 를 사용하여 모든 값을 임시로 복사하지 않아도됩니다.
sum(d.itervalues())
파이썬 3에서는 d.values()
그 메소드가 변경되어 itervalues()
더 이상 필요하지 않기 때문에 제거 되었기 때문에 사용할 수 있습니다 .
사전의 키 값을 항상 반복하는 버전 독립적 인 코드를보다 쉽게 작성하려면 유틸리티 기능이 도움이 될 수 있습니다.
import sys
def itervalues(d):
return iter(getattr(d, ('itervalues', 'values')[sys.version_info[0]>2])())
sum(itervalues(d))
이것은 본질적으로 Benjamin Peterson의 six
모듈이하는 일입니다.
d = {'key1': 1,'key2': 14,'key3': 47}
sum1 = sum(d[item] for item in d)
print(sum1)
당신은 for 루프를 사용하여 그것을 할 수 있습니다
나는 sum(d.values())
합계를 얻는 가장 효율적인 방법 이라고 생각 합니다.
reduce 함수를 사용하여 람다 식과 함께 합계를 계산할 수도 있습니다.
reduce(lambda x,y:x+y,d.values())
phihag의 답변 (및 유사한 답변)은 python3에서 작동하지 않습니다.
파이썬 3의 경우 :
d = {'key1': 1,'key2': 14,'key3': 47}
sum(list(d.values()))
최신 정보! 작동하지 않는다는 불만이 있습니다! 터미널에서 스크린 샷을 첨부하면됩니다. 버전 등에서 일부 불일치가있을 수 있습니다.
이를 위해 'for loop'를 고려할 수 있습니다.
d = {'data': 100, 'data2': 200, 'data3': 500}
total = 0
for i in d.values():
total += i
총계 = 800
sum(d.values())
, 이후 .values()
리턴한다 List
.
사전에있는 모든 값의 생성기를 가져온 다음 목록으로 캐스트하고 sum () 함수를 사용하여 모든 값의 합계를 얻을 수 있습니다.
예:
c={"a":123,"b":4,"d":4,"c":-1001,"x":2002,"y":1001}
sum(list(c.values()))
sum
의 관점에서 자신을reduce
-reduce
(예를 들어,보다 일반적인 형태sum
,min
그리고max
모든면에서 쓸 수있다reduce
) 및 기타 문제 (예를 들면 해결할 수 있습니다product
쉽게 참조).