【问题标题】:Changing an value in a dictionary python 2.7更改字典python 2.7中的值
【发布时间】:2015-02-07 19:56:39
【问题描述】:

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

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

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

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

【问题讨论】:

  • 你应该用谷歌搜索 Python 字典教程。

标签: python list python-2.7 dictionary tuples


【解决方案1】:

程序中的错误

您错过了调用...返回值列表的是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

所以这样你就可以准确地存储余额了

【讨论】:

  • Geezus 在 46 秒内投了 3 票。伙计们,这个答案最接近 OP 的问题。
  • 好吧,FWIW,你绝对是最完整、最准确和有帮助的答案——更不用说在 OP 的问题中实际修复对 .values 的调用了.来自我的 +1。
  • @imallett 谢谢......但更多的人对此持不同意见。希望他们在下面发表评论
  • 也打算加上 +=。救了我一份工作;)
  • @BhargavRao,今天实在是太懒了,无法正确语法!
【解决方案2】:

您通过其而不是索引(如列表或元组)引用字典。你可以这样做:

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

【讨论】:

  • 是的,更新了值,现在可以完美运行。太棒了。
【解决方案3】:

忘记手动创建 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 意味着您将始终更改第二个元素,因此您将永远无法添加超过两个值,因为分配只会覆盖先前的值。

【讨论】:

    【解决方案4】:

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

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

    或者只修改第二项

    bank['bob'][1] = 10
    

    【讨论】:

      猜你喜欢
      • 2016-07-30
      • 2015-02-08
      • 1970-01-01
      • 2022-11-24
      • 2016-05-04
      • 1970-01-01
      • 1970-01-01
      • 2012-01-18
      • 1970-01-01
      相关资源
      最近更新 更多