Зачем получать неожиданный ответPython

Программы на Python
Ответить
Anonymous
 Зачем получать неожиданный ответ

Сообщение Anonymous »

У меня есть таблица данных, как показано ниже:

Код: Выделить всё

      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 меняется в каждом цикле!
Не знаю, почему так.

Подробнее здесь: https://stackoverflow.com/questions/521 ... ected-dict
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»