Python 在循环中更改字典值

问题描述 投票:0回答:1

更改字典值的最短拼写是(不使用单行)

# 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 loops dictionary
1个回答
0
投票

这基本上是由于字典的键/值关系所致。

在 Python 中,当您使用

for value in dct.values():
迭代字典的值时,变量
value
只是对字典中值的引用。当您为 value 分配新值时,您只是更改 value 指向的位置,而不是字典中的实际值。

以下是所发生情况的详细说明:

  • 在循环
    for value in dct.values():
    中,value被一一赋值给字典中的每个值。
  • 当您执行
    value = 'new'
    时,您只是将值的引用更改为指向字符串“new”。
  • 此赋值不会修改字典 dct 中的原始值。

是的,要更改字典中的值,您需要使用键直接访问和修改字典值,正如您已经提到的那样。

© www.soinside.com 2019 - 2024. All rights reserved.