Python 将字典的子集另存为新变量,并保留原始字典
我将大型JSON文件作为python中的字典导入。我需要对字典中的一个键执行操作,它本身就是一个列表。我想保持原始导入词典不变 我对Python没有太多经验,但我读到y=x创建了一个新变量y,它引用了x引用的同一个对象。。。。这意味着对y所做的更改也会更改原始变量x 所以如果我用Python 将字典的子集另存为新变量,并保留原始字典,python,dictionary,copy,subset,Python,Dictionary,Copy,Subset,我将大型JSON文件作为python中的字典导入。我需要对字典中的一个键执行操作,它本身就是一个列表。我想保持原始导入词典不变 我对Python没有太多经验,但我读到y=x创建了一个新变量y,它引用了x引用的同一个对象。。。。这意味着对y所做的更改也会更改原始变量x 所以如果我用 players =data["Players"] 并对新的变量玩家进行了更改,这会改变原有的规则吗?我已经测试过了,没有看到有什么变化,但我担心我遗漏了什么 我是否需要创建密钥的副本以确保保留原始词典?既然列表是一个
players =data["Players"]
并对新的变量玩家进行了更改,这会改变原有的规则吗?我已经测试过了,没有看到有什么变化,但我担心我遗漏了什么
我是否需要创建密钥的副本以确保保留原始词典?既然列表是一个复合对象,我是否需要创建一个deepcopy,以便其中的对象也不是引用?
即:
players = data["Players"].copy()
players = copy.deepcopy(data["Players"])
如果指定了dict的特定键,则无需担心使用copy/deepcopy 您可以使用 例如: 数据={ 玩家:[p1、p2、p3] } 创建新对象-不是y=x 玩家=数据[玩家] 引用同一对象-是y=x players2=数据 printf'data id->{iddata}\n图层2 id->{idplayers2}\n图层id->{idplayers}' 结果通知数据和播放器2具有相同的id:
data id -> 140253164993728
players2 id -> 140253164993728
players id -> 140253164186432
谢谢,这很有帮助。身份检查对我来说将是一个健全的维护者。出于某种原因,我发现y=x关系是如此不直观。