【问题标题】:Changing a particular value of a particular key in dictionary [duplicate]更改字典中特定键的特定值[重复]
【发布时间】:2019-12-31 11:22:55
【问题描述】:

我是数据科学的新手。我在更改字典中特定键的特定值时遇到问题。我有一个代表鸢尾植物类的字典,每个植物都有 4 个属性 sepal_length、sepal_width、petal_length 和 petal_width 例如

iris-setosa={sepal_length,sepal_width,petal_length,petal_width}

iris-veriginica={sepal_length,sepal_width,petal_length,petal_width}

iris-veronica={sepal_length,sepal_width,petal_length,petal_width}

最初我已将所有这些属性初始化为零。 现在我只想通过在其中添加 2 将 iris-setosa 的 sepal_length 更改为 2(必须仅通过添加来完成)

import numpy as np
import pandas as pd
dic={}
dic2={}


dic['sepal_length']=0
dic['petal_length']=0
dic['sepal_width']=0
dic['petal_width']=0
dic2['iris-setosa']=dic
dic2['iris-verginica']=dic
dic2['iris-veronica']=dic


dic2['iris-setosa']['sepal_length']=dic2['iris-setosa']['sepal_length']+2
print(dic2)

但结果是这样的:

{'iris-setosa': {'sepal_width': 0, 'petal_width': 0, 'sepal_length': 2, 'petal_length': 0}, 'iris-verginica': {'sepal_width': 0, 'petal_width': 0, 'sepal_length': 2, 'petal_length': 0}, 'iris-veronica': {'sepal_width': 0, 'petal_width': 0, 'sepal_length': 2, 'petal_length': 0}}

上面的代码正在更新所有的 sepal_length,即 iris-setosa、iris-verginica 和 iris-veronica,这不是必需的。我应该如何只更改 iris-setosa 的 sepal_length 的值。如果我犯了任何语法错误,请忽略。

【问题讨论】:

    标签: python python-3.x dictionary machine-learning data-science


    【解决方案1】:

    dic2 中的所有三个条目都指向同一个字典。因此,当您通过一个参考更新它时,所有条目都会更改(因为它们实际上是同一个字典)。相反,您应该为每个条目创建一个单独的字典,例如:

    dic={}
    
    for name in ['iris-setosa', 'iris-verginica', 'iris-veronica']:
        entry = {'sepal_length' : 0, 'petal_length' : 0, 'sepal_width' : 0, 'petal_width' : 0}
        dic[name] = entry
    
    dic['iris-setosa']['sepal_length'] = dic['iris-setosa']['sepal_length'] + 2
    

    【讨论】:

      猜你喜欢
      • 2022-11-24
      • 1970-01-01
      • 1970-01-01
      • 2023-01-08
      • 1970-01-01
      • 1970-01-01
      • 2020-11-07
      • 2020-03-21
      • 1970-01-01
      相关资源
      最近更新 更多