2017-09-10 1 views
-3
sleeps=[{"summaryId ": "x209bf59-59b0c5a8-585c ", 
     "validation ": "AUTO_TENTATIVE ", 
     "durationInSeconds ": 22620, 
     "startTimeInSeconds ": 1504757160, 
     "awakeDurationInSeconds ": 900, 
     "startTimeOffsetInSeconds ": -14400, 
     "deepSleepDurationInSeconds ": 8160, 
     "lightSleepDurationInSeconds ": 13560}, 
     {"summaryId ": "x209bf59-59b0c5a8-23a0 ", 
     "validation ": "AUTO_TENTATIVE ", 
     "durationInSeconds ": 9120, 
     "startTimeInSeconds ": 1504757160, 
     "awakeDurationInSeconds ": 300, 
     "startTimeOffsetInSeconds ": -14400, 
     "deepSleepDurationInSeconds ": 1680, 
     "lightSleepDurationInSeconds ": 7140} 
     ] 

res = sum([x["durationInSeconds"] for x in sleeps]) 
print(res) 

이것은 Keyerror입니다.dict의 특정 요소를 추가하는 방법

답변

0

수정할 열쇠는 당신의 DICT 정의

"durationInSeconds " 
       ^
0

해싱에 여분의 공간을 가지고 있으며, 비교 계정으로 공백을. 차이가 서로 인쇄되면 차이를 쉽게 발견 할 수 있습니다.

"durationInSeconds " 
"durationInSeconds" 

첫 번째 공백은 후행 공백이 있습니다.

>>> hash(s1) == hash(s2) 
False 
>>> s1 == s2 
False 

그래서 그들은 또한 KeyError 설명하는 서로 동일 존중에 있습니다. 이 문제를 해결하려면 사전에서 뒤 공백을 제거하거나 뒤 공백으로 키를 찾아야합니다. 예 :

>>> res = sum([x["durationInSeconds "] for x in sleeps]) 
>>> print(res) 
31740 
관련 문제