我在制作一个虚假的ATM模拟器。我有以下代码将被保存到一个文件并存储假装用户名称,引脚和余额。更改字典中的值python 2.7
bank = {'bob':[1122,0],'fred':[2211,0]}
当程序,如果用户将钱存入(例如鲍勃存款£10
)我需要第二个值更新运行。所以它会读'bob':[1122,10]
我是相当新的编码,我试过 - bank.values [0][1]
= 10
但没有奏效。
我在制作一个虚假的ATM模拟器。我有以下代码将被保存到一个文件并存储假装用户名称,引脚和余额。更改字典中的值python 2.7
bank = {'bob':[1122,0],'fred':[2211,0]}
当程序,如果用户将钱存入(例如鲍勃存款£10
)我需要第二个值更新运行。所以它会读'bob':[1122,10]
我是相当新的编码,我试过 - bank.values [0][1]
= 10
但没有奏效。
你引用一个词典通过其键而不是指数(像列表或元组)。你可以简单地做:
bank['bob'][1] = 10 # 'bob' is the key
是的,更新了价值,现在完美。辉煌。 – 2015-02-07 20:03:39
因为它们是无序的容器,所以不能依赖字典的顺序。因此,您不能使用索引访问给定项目,因为索引是无意义的(因为它意味着顺序)。您将不得不使用该键更改该值以检索该项目。
bank['bob'] = [1122, 10]
或者修改只在第二项
bank['bob'][1] = 10
错误在你的程序
你缺少的电话...这是bank.values()
返回值的列表,而不是bank.values
。但是这样做是错误的,因为你将失去插入值的顺序,所以[0]
不一定是第一个值。
做的正确的方式,
做它,正确的方法应该是
>>> bank['bob'][1] = 10
>>> bank['bob'][1]
10
小思想 - 更新账户余额
bank['bob'][1] = 10
仅会覆盖列表的原始内容。所以如果鲍勃再次存款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
表示您将始终更改第二个元素,因此您将永远无法添加两个以上的值,因为分配只会覆盖先前的值。
你应该为Google的Python词典教程。 – imallett 2015-02-07 20:00:25