繁体   English   中英

如何更新 python 中的字典值

[英]How to update a dictionary value in python

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

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

output:

{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 所以我希望它更新指定键的值。

如果你想确保它能够 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操作。

@NicolasGuruphat的答案相同。

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

我试图更新这样的值:

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

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

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

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

Output:

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

但是如果您使用不同的类型,则会添加一个新密钥。

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

Output:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM