gpt4 book ai didi

python - 为什么得到意想不到的字典

转载 作者:行者123 更新时间:2023-11-28 20:57:57 27 4
gpt4 key购买 nike

我有一个数据表如下:

      A  B  C
type1 A1 B1 C1
type2 A2 B2 C2

我使用下面的代码

d={}
D={}
h = ['A','B','C']
type1=['A1','B1','C1']
type2=['A2','B2','C2']

for i,val in enumerate(h):

d['Type1'] = type1[i]
d['Type2'] = type2[i]
D[val]=d
print('loop',i,'\nd:',d,'\nD:',D,'\n\n====')

#print(D)

我希望得到以下口述结果:

{'A':{'Type1':'A1','Type2':'A2'},'B':{'Type1':'B1','Type2':B2},'C':{'Type1':C1,'Type2':'C2'},}

但是,输出是:

{'A': {'Type1': 'C1', 'Type2': 'C2'}, 'B': {'Type1': 'C1', 'Type2': 'C2'}, 'C': {'Type1': 'C1', 'Type2': 'C2'}}

我的逻辑有什么错误?

我不知道那里出了什么问题。

我在循环中添加了打印。

loop 0 
d: {'Type1': 'A1', 'Type2': 'A2'}
D: {'A': {'Type1': 'A1', 'Type2': 'A2'}}

====
loop 1
d: {'Type1': 'B1', 'Type2': 'B2'}
D: {'A': {'Type1': 'B1', 'Type2': 'B2'}, 'B': {'Type1': 'B1', 'Type2': 'B2'}}

====
loop 2
d: {'Type1': 'C1', 'Type2': 'C2'}
D: {'A': {'Type1': 'C1', 'Type2': 'C2'}, 'B': {'Type1': 'C1', 'Type2': 'C2'}, 'C': {'Type1': 'C1', 'Type2': 'C2'}}

====

从输出来看,d在每个循环中都是正确的但是 D 正在循环变化!不确定为什么会这样。

最佳答案

您在每次迭代中都使用相同的字典。您应该将 d 的定义移动到循环中。

for i,val in enumerate(h):
d = {}
...

关于python - 为什么得到意想不到的字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52179509/

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