将字典作为输入参数传递给函数全局/局部变量问题

Bog*_*yka 2 python dictionary

嗨,任何人都可以为我澄清这个问题.以下是代码示例:


def test1(d1):
    d1_adj = d1.copy()
    d1_adj.get(0)[0] *= 10
    return d1_adj

d1 = {0: [10, 10]}
d1_adj = test1(d1)
print d1
{0: [100, 10]}
Run Code Online (Sandbox Code Playgroud)

为什么d1字典会更新?如果我想保留原始输入字典的值并仅更新已复制的值,我怎么能遇到这个问题?

感谢名单

Abh*_*kan 5

这是因为d.copy()是浅拷贝.您需要深层复制才能完成此任务.

from copy import deepcopy
Run Code Online (Sandbox Code Playgroud)

然后

d1_adj = deepcopy(d1)
Run Code Online (Sandbox Code Playgroud)