【问题标题】:How to add particular element of dict如何添加dict的特定元素
【发布时间】:2017-09-10 17:34:47
【问题描述】:
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

【问题讨论】:

    标签: python dictionary python-3.6 keyerror


    【解决方案1】:

    您要修改的键在您的 dict 定义中有多余的空格

    "durationInSeconds "
                      ^
    

    【讨论】:

      【解决方案2】:

      散列和比较会考虑空格。如果它们彼此相邻打印,可能更容易发现差异:

      "durationInSeconds "
      "durationInSeconds"
      

      第一个有一个尾随空格。

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

      所以它们在任何方面都不相同,这也解释了KeyError。要修复它,您需要删除字典中的尾随空格,或者使用尾随空格查找键。例如:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-12-10
        • 1970-01-01
        • 2017-11-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多