【问题标题】:how to store a dictionary within a for loop如何在for循环中存储字典
【发布时间】:2018-04-12 08:52:30
【问题描述】:

我想将数据的值存储在我的 dict{} 字典中,但出现错误。

mydict= {}
for entity in entities:
     if entity.entity_id.startswith('sensor'):
         list = remote.get_state(api, entity.entity_id)
         data = {list.attributes['friendly_name'] : list.state}
         for key, val in data.items():
             mydict+= {key:val}

我收到以下错误。

mydict+= {key:val}
TypeError: unsupported operand type(s) for +=: 'dict' and 'dict'

【问题讨论】:

    标签: python dictionary for-loop store


    【解决方案1】:

    与人们的直觉相反,如错误所示,dictdict 类型不支持 += 运算符。字典与列表略有不同,+= 不像它们的某种连接运算符那样工作。

    但是,您为什么不尝试更新内部 for 循环范围,而不是使用 += 运算符,如以下 sn-p 中所做的那样?

    mydict= {}
    for entity in entities:
        if entity.entity_id.startswith('sensor'):
            list = remote.get_state(api, entity.entity_id)
            data = {list.attributes['friendly_name'] : list.state}
            for key, val in data.items():
                mydict[key] = val
    

    或者,您可以进行批量更新,如下所示。

    mydict= {}
    for entity in entities:
        if entity.entity_id.startswith('sensor'):
            list = remote.get_state(api, entity.entity_id)
            data = {list.attributes['friendly_name'] : list.state}
            mydict.update(data)
    

    【讨论】:

    • 你的意思是我必须在 key val for 循环中更改它? data = {list.attributes['friendly_name'] : list.state} for key, val in data.items(): mydict[key]= val
    • 我更新了我的代码 sn-p 以覆盖你的整个代码以避免任何误解。
    • 它有效。谢谢你。我有一个小问题。您如何将注释中的代码标记为代码。在这个问题中,我用 ctrl+k 做到了。但它在评论中不起作用。
    • 我通常只是在文本和代码段之间保留一个空行,并将代码缩进 4 个空格字符或一个制表符。也有人使用 ` 字符来指定代码块。您可能需要阅读 Markdown 以了解更多详细信息。
    • 如果您认为您的问题已经解决,请记住选择一个答案。
    猜你喜欢
    • 2019-07-16
    • 2022-11-17
    • 2019-12-31
    • 2020-06-25
    • 1970-01-01
    • 2018-12-01
    • 2019-10-09
    • 1970-01-01
    • 2013-12-07
    相关资源
    最近更新 更多