更改字典python 2.7中的值
我在做一个假的ATM模拟器。我有以下代码将被保存到一个文件和存储假装用户名,PIN和余额更改字典python 2.7中的值,python,list,python-2.7,dictionary,tuples,Python,List,Python 2.7,Dictionary,Tuples,我在做一个假的ATM模拟器。我有以下代码将被保存到一个文件和存储假装用户名,PIN和余额 bank = {'bob':[1122,0],'fred':[2211,0]} 当程序运行时,如果用户存款(例如bob存款.10),我需要更新第二个值。因此它将读作'bob':[1122,10] 我对编码非常陌生,我尝试过-bank.values[0][1]=10,但这不起作用。你不能依赖字典的顺序,因为它们是无序的容器。因此,您不能使用索引访问给定项,因为索引没有意义(因为它意味着顺序)。您必须使用键来
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()
,返回值列表,而不是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,只需在使用密钥/客户名称添加付款时附加值即可:
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
意味着您将始终更改第二个元素,这样您将永远无法添加超过两个的值,因为赋值只会覆盖上一个值。您应该在谷歌上搜索Python字典教程。Geezus在46秒内3次否决。这个答案最接近OP的问题,伙计们。好吧,FWIW,你绝对是最完整、最准确、最有帮助的答案——更不用说实际修复OP问题中对.values
的调用了+我给你的。@imallett谢谢。。。但更多的人对此持不同意见。希望他们在下面留下一条评论,也会添加+=的。救了我一份工作;)@巴加夫罗,今天太懒了,语法不正确!是的,它更新了值,现在可以完美地工作。明亮的