gpt4 book ai didi

python "del"语句删除多个字典

转载 作者:行者123 更新时间:2023-12-01 04:34:31 25 4
gpt4 key购买 nike

我对字典的 del 语句有问题,因为我得到了多次删除。例如我的代码如下所示:

info_dict = {'parent1':{'exon':{'exon1':{'str_0':1, 'end_0':1}, 'exon2':{'str_0':2, 'end_0':2}}},'parent2':{'exon':{'exon1':{'str_0':1, 'end_0':1}, 'exon3':{'str_0':3, 'end_0':3}}}}
print info_dict
#now i want to delete this key:
del info_dict.get('parent1').get('exon').get('exon1')['end_0']
#as an result i get this:
print info_dict
{'parent1':{'exon':{'exon1':{'str_0':1}, 'exon2':{'str_0':2, 'end_0':2}}},'parent2':{'exon':{'exon1':{'str_0':1}, 'exon3':{'str_0':3, 'end_0':3}}}}

如您所见,del 语句从“parent1”中删除了正确的键。但它也会从字典“parent2”中删除相同的键。

在我的代码中,我使用以下命令循环遍历字典:

for parent_key in info_dict: 
"check something and del"

如果我运行上面的代码,del 语句只会删除一个键。但是当我循环它时,它会删除多个键。我检查了我的代码好几次了,没有问题。此时我不知道出了什么问题......抱歉我没有向您展示整个代码,它似乎很大。但也许有人知道问题是什么。谢谢您

最佳答案

在实际代码中的某个位置,您正在创建对dicts引用,因此当您在一个地方进行更改时,您会更改所有引用。

d = {1:{2:3}}

d1 = d # creates a reference so d1 id d
print(d)
print(d1)
del d[1]

print(d)
print(d1)

输出:

{1: {2: 3}}
{1: {2: 3}}
{} # both empty as both are the same dict/object
{}

现在使用 copy.deepcopy 制作实际副本:

from copy import deepcopy

d = {1:{2:3}}

d1 = deepcopy(d) # creates a copy/new object
print(d)
print(d1)
del d[1]

print(d)
print(d1)

输出:

{1: {2: 3}}
{1: {2: 3}}
{} # only d is empty as we created a new object for d1
{1: {2: 3}}

关于python "del"语句删除多个字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31941214/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com