更改字典值的最短拼写是(不使用单行)
# process array with loop
dct = {1: 'one', 2: 'two', 3: 'three'}
for key, value in dct.items():
dct[key] = 'new'
print(dct)
#{1: 'new', 2: 'new', 3: 'new'}
根据python手册
.values()
'返回字典值的新视图'和view是'提供字典条目的动态视图,这意味着当字典更改时,视图反映这些更改.'
为什么不通过其他方式改变视图不动态更改字典?
dct = {1: 'one', 2: 'two', 3: 'three'}
for value in dct.values():
value = 'new'
print(dct)
#{1: 'one', 2: 'two', 3: 'three'}
这基本上是由于字典的键/值关系所致。
在 Python 中,当您使用
for value in dct.values():
迭代字典的值时,变量 value
只是对字典中值的引用。当您为 value 分配新值时,您只是更改 value 指向的位置,而不是字典中的实际值。
以下是所发生情况的详细说明:
for value in dct.values():
中,value被一一赋值给字典中的每个值。value = 'new'
时,您只是将值的引用更改为指向字符串“new”。是的,要更改字典中的值,您需要使用键直接访问和修改字典值,正如您已经提到的那样。