在函数中用另一个字典替换字典内容 - Python
我有一个字典(就是一种用来存储数据的结构),我想把它作为参数传递给一个函数。执行完这个函数后,我希望这个字典能被修改。
这是我尝试的代码:
def func(dict):
dict = {'a': 5}
我希望能发生这样的事情:
dict = {'b': 3}
func(dict)
print(dict) # to be {'a': 5}, not {'b': 3}
有没有办法实现这个呢?非常感谢! :)
2 个回答
7
你可以在一个方法里直接修改字典,因为字典是通过引用传递的。但在你的情况中,你其实是创建了一个全新的字典。因为你的变量 dict
是在一个方法里面,所以它和外面的内容不在同一个作用域,这样它就指向了一个新的变量。如果你想完全替换掉它,可以考虑:
def func(dct):
return {'a': 5}
dct = func(dct)
我觉得完全清空一个已有的字典,然后用新内容更新它的唯一好处是,如果这个字典有多个其他地方的引用,你也想一起更新它们。如果不是这种情况,我建议你直接创建一个新的字典。如果旧的字典的引用计数降到零,它就会被垃圾回收,所以我觉得这样做在内存上并没有什么特别大的好处。
33
def func(dct):
dct.clear()
dct.update({'a': 5})
当然可以!请把你想要翻译的内容发给我,我会帮你用简单易懂的语言解释清楚。