Python,从字典中创建一个新变量?不像看上去那么简单?

2024-09-28 03:21:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试创建一个新的变量,它将包含一个现有的字典,这样我就可以在这个新字典中更改内容,而不会影响旧字典。当我尝试下面的方法时,我认为这是很明显的方法,当我编辑新字典时,它似乎仍然在编辑我原来的字典。。我一直在寻找这方面的信息,但似乎找不到任何东西,任何信息,谢谢

newdictionary = olddictionary

Tags: 方法信息编辑内容字典newdictionaryolddictionary
3条回答

您只是让newdictionary指向相同的引用olddictionary指向。 参见this page(它是关于列表的,但也适用于dict)。在

alt text


请改用^{}(注意:这将创建一个浅拷贝):

newdictionary = olddictionary.copy()

要创建深度副本,可以使用复制模块中的^{}

^{pr2}$

维基百科:

Shallow vs Deep Copy

在Python中这样的赋值只会使newdictionary名称引用与olddictionary相同的内容,如您所注意到的。您可以使用dict()构造函数创建一个新的字典:

newdictionary = dict(olddictionary)

请注意,这将生成一个副本。有关深拷贝,请参阅^{}标准库模块。在

您正在创建引用,而不是副本。为了制作一个完整的副本而不动原稿,您需要copy.deepcopy()。所以:

from copy import deepcopy
dictionary_new = deepcopy(dictionary_old)

只需使用a = dict(b)a = b.copy()将生成一个浅拷贝,并将词典中的任何列表保留为彼此的引用(这样虽然编辑其他项目不会导致问题,但在一个字典中编辑列表也会导致另一个字典中的更改)。在

相关问题 更多 >

    热门问题