Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
更改字典python 2.7中的值_Python_List_Python 2.7_Dictionary_Tuples - Fatal编程技术网

更改字典python 2.7中的值

更改字典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,但这不起作用。你不能依赖字典的顺序,因为它们是无序的容器。因此,您不能使用索引访问给定项,因为索引没有意义(因为它意味着顺序)。您必须使用键来

我在做一个假的ATM模拟器。我有以下代码将被保存到一个文件和存储假装用户名,PIN和余额

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谢谢。。。但更多的人对此持不同意见。希望他们在下面留下一条评论,也会添加+=的。救了我一份工作;)@巴加夫罗,今天太懒了,语法不正确!是的,它更新了值,现在可以完美地工作。明亮的