更改字典中的值 python 2.7

Changing an value in a dictionary python 2.7

我正在制作一个假的 ATM 模拟器。我有以下代码将被保存到一个文件中并存储假用户名、密码和余额。

bank = {'bob':[1122,0],'fred':[2211,0]}

如果用户存款(例如 bob 存款 £10)程序运行时,我需要更新第二个值。所以它会读作 'bob':[1122,10]

我对编码很陌生,我试过 - bank.values [0][1] = 10 但那没有用。

你不能依赖字典的顺序,因为它们是无序的容器。因此,您不能使用索引访问给定的项目,因为索引是无意义的(因为它暗示顺序)。您必须使用密钥更改值才能检索项目。

bank['bob'] = [1122, 10]

或者只修改第二项

bank['bob'][1] = 10

您通过其 而非索引(如列表或元组)引用字典。你可以简单地做:

bank['bob'][1] = 10  # 'bob' is the key

你程序的错误

您错过了呼叫...它是 bank.values(),returns 值列表而不是 bank.values。但这是错误的做法,因为您将丢失插入值的顺序,因此 [0] 不一定是第一个值。

正确的做法

正确的做法应该是

>>> bank['bob'][1] = 10
>>> bank['bob'][1]
10

小思 - 正在更新账户余额

bank['bob'][1] = 10 只会覆盖列表的原始内容。因此,如果 bob 再次存入 20,那么他的余额将仅为 20,而不是 10+20,即 30。所以你应该改为

>>> bank['bob'][1] += 10

下一笔存款将变成

>>> bank['bob'][1] += 20

所以通过这种方式,您实际上可以准确地存储余额

忘记手动创建 0,只需在使用 key/customer 名称添加付款时附加值:

bank = {'bob':[1122],'fred':[2211]}

bank["bob"].append(10) # append to bobs list

print(bank)
{'fred': [2211], 'bob': [1122, 10]}

另外bank.values实际上并没有调用该方法。您缺少调用方法 bank.values() 所需的括号,但正如我已经提到的,追加是一个更简单的解决方案。

使用 bank['bob'][1] = 10 意味着您将始终更改第二个元素,因此您将永远无法添加两个以上的值,因为赋值只会覆盖之前的值。