我有一个初始化为这样的diciary:
tab = {'Mike': 0, 'Chad': 15, 'Taylor': 2}
我希望能够将整数添加到字典中的每个值。
例如,在添加5之后,字典应该如下所示:
{'Mike': 5, 'Chad': 20, 'Taylor': 7}
似乎这可以用几行代码来完成,但我想不通。 我试过一个for循环:
for k in tab.itervalues():
k = k + 5
我运行此代码,然后打印出字典:
tab = {'Mike': 0, 'Chad': 15, 'Taylor': 2}
这本词典没有改动。我不确定Python是否将这些值识别为字符串或整数。
最简单的方法?
tab.itervalues()
在值上创建迭代器。迭代这些值,然后依次传递每个值。这些值是
int
s.在Python中,它们是不可变的。在Python中,语句
a += 3
被翻译成a = a + 3
。a + 3
为a
已引用int的情况创建一个新的int对象,然后将名称a
反弹到新对象。因此您可以更改迭代变量(通过重新绑定它),但不能更改映射中的值(因为它是不可变的)。
waffle paradox's solution通过使用键上的迭代器访问并重新绑定dict中的值来绕过这个问题。这很简单,也很好。
或者,您可以接受不变性,并应用函数式编程范式。我们希望创建一个与我们拥有的字典类似的字典,但是键是递增的;并且导致
tab
引用这个新字典只是偶然的。因此:
这种方法通常会让你的生活更容易,当你有一个困难的问题,基于同样的基本问题。
相关问题 更多 >
编程相关推荐