2017-09-10 25 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如何添加字典的特定元素

回答

0

要修改的关键在你的字典定义

"durationInSeconds " 
       ^
0

散列有多余的空间,比较需要空格考虑。如果它们彼此相邻印刷,可能更容易发现差异:

"durationInSeconds " 
"durationInSeconds" 

第一个有一个尾随空白。

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

所以他们在不尊重彼此相等,这也解释了KeyError。要修复它,您需要删除字典中的尾部空白,或者查找带有尾部空白的键。例如:

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