2017-09-10 3 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

キーは

"durationInSeconds " 
       ^
0

ハッシュとの比較は、アカウントに空白を取るあなたの辞書の定義で冗長なスペースがあります。

"durationInSeconds " 
"durationInSeconds" 

最初のものは末尾の空白があります。おそらく、より簡単に、彼らはお互いの隣に印刷された場合の違いを発見します。

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

彼らはまた、KeyErrorを説明したが等しくない点です。これを修正するには、辞書内の末尾の空白を削除するか、末尾の空白でキーをルックアップする必要があります。例:

>>> res = sum([x["durationInSeconds "] for x in sleeps]) 
>>> print(res) 
31740 
関連する問題