【问题标题】:How to update a dictionary value in python如何在python中更新字典值
【发布时间】:2022-07-24 18:04:24
【问题描述】:

我创建了一个范围为的字典:

answered = dict.fromkeys(range(1,51))

输出:

{1: None, 2: None, 3: None, 4: None, 5: None, 6: None, 7: None, 8: None, 9: None, 10: None, 11: None, 12: None, 13: None, 14: None, 15: None, 16: None, 17: None, 18: None, 19: None, 20: None, 21: None, 22: None, 23: None, 24: None, 25: None, 26: None, 27: None, 28: None, 29: None, 30: None, 31: None, 32: None, 33: None, 34: None, 35: None, 36: None, 37: None, 38: None, 39: None, 40: None, 41: None, 42: None, 43: None, 44: None, 45: None, 46: None, 47: None, 48: None, 49: None, 50: None}

我已经尝试像这样更新值:

answered[1] = sent_answer #sent_answer -> some text

但我得到的是:

{1: None, 2: None, 3: None, ..... ,49: None, 50: None, '1': 'I- III - II - IV'}

它正在添加一个新的 dict 项,键是 str 所以我希望它更新指定键的值。

【问题讨论】:

  • 您的代码对我有用。我尝试运行它时没有发现任何问题

标签: python dictionary


【解决方案1】:

如果你想确保它能够 100% 完成这项工作,最好使用字典的update 方法,如下所示:

my_dict = {1:"a value", 2:"another value"}
my_dict.update({1:"your value"})

此外,从 Python 3.10 开始,您可以执行以下操作:

my_dict |= {1:"your value"}

还有更多:

my_dict = {**my_dict, 1:"your value"}

你会得到以下结果:

{1:"your value", 2:"another value"}

请注意,您可以添加当前键值或新键值。一般来说,这是一种 upsert 类型的操作。

【讨论】:

    【解决方案2】:

    与 @NicolasGuruphat 答案相同。

    我相信你遇到的问题是这一部分

    我已经尝试像这样更新值:

    answered[1] = sent_answer #sent_answer -> some text```
    

    我想如果你回到你的代码,你会发现 answered["1"] 而不是 answered[1]

    【讨论】:

    • 但我想更新值而不是添加新值
    • 我知道,但是在您的代码中,您不会替换您添加的内容。这就是为什么你必须使用回答[1] 而不是回答[“1”] 因为最后一个添加
    【解决方案3】:

    确保您尝试更新的密钥类型相同。如果它是字典中的字符串,那么在更新时,使用字符串。如果不这样做,python 会将其视为不同的键并添加一个。

    answers = {1: None, 2: None, 3: None}
    answers[1] = 'some text'
    print(answers)
    

    输出:

    {1: 'some text', 2: None, 3: None}
    

    但是如果你使用不同的类型,那么就会添加一个新的键。

    answers['2'] = 'new text'
    print(answers)
    

    输出:

    {1: 'some text', 2: None, 3: None, '2': 'new text'}
    

    当它们是字符串时,键也区分大小写。

    【讨论】:

      猜你喜欢
      • 2017-04-25
      • 2017-07-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-07
      • 2020-03-14
      • 2012-04-11
      • 1970-01-01
      相关资源
      最近更新 更多