gpt4 book ai didi

python - python中的嵌套字典

转载 作者:行者123 更新时间:2023-11-30 21:58:00 25 4
gpt4 key购买 nike

我正在尝试更新内部字典中的值,但它正在更新,我尝试了很多,但仍然面临同样的问题。提前致谢。

arr = [1,2]
d_int = {'a':False, 'e':False, 'i':False, 'o':False, 'u':False}
d_main ={i : d_int for i in range(len(arr))}
print(d_main)
d_main[0]['a'] = True
d_main[1]['i'] = True
print(d_main)

结果:

{0: {'a': True, 'e': False, 'i': True, 
'o': False, 'u': False},
1: {'a': True, 'e': False, 'i': True,
'o': False, 'u': False}
}

需要这样的东西:

{0: {'a': True, 'e': False, 'i': False,
'o': False, 'u': False},
1: {'a': False, 'e': False, 'i': True,
'o': False, 'u': False}
}

最佳答案

如果您是新手,没有任何编程语言的编程经验,为了理解问题发生的原因,您最好先了解一下C语言中的指针。

<小时/>

copy.deepcopy 是最好的。 dict.copy 在深度嵌套的字典中也有同样的问题。如下。

a = {"1": {"2": 2, "3": 3}, "4":4}

c = {1:a.copy()}
b = {1:a.copy()}

c[1]['1']['2'] = 5
c[1]['4'] = 40

print(c)
# {1: {'1': {'3': 3, '2': 5}, '4': 40}}
print(b)
# {1: {'1': {'3': 3, '2': 5}, '4': 4}}

但是copy.deepcopy可以很好地处理深层嵌套的字典。

from copy import deepcopy

a = {"1": {"2": 2, "3": 3}, "4":4}

c = {1: deepcopy(a)}
b = {1: deepcopy(a)}

c[1]['1']['2'] = 5
c[1]['4'] = 40

print(c)
# {1: {'1': {'2': 5, '3': 3}, '4': 40}}

print(b)
# {1: {'1': {'2': 2, '3': 3}, '4': 4}}

实际上,这个问题不仅发生在嵌套字典上,其他类型也存在,比如嵌套列表、具有 dict 属性的类等,而 copy.deepcopy 效果很好。

关于python - python中的嵌套字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55074992/

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