更改字典中的值 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
意味着您将始终更改第二个元素,因此您将永远无法添加两个以上的值,因为赋值只会覆盖之前的值。
我正在制作一个假的 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
意味着您将始终更改第二个元素,因此您将永远无法添加两个以上的值,因为赋值只会覆盖之前的值。