-1
Temp = {}
Final = {}

OK =['OK','OK']
NOTOK =['NOTOK','NOTOK']

Temp[1] = OK
Final['u1']=Temp

print(Final)

Temp.clear()
Temp[2] = OK
Final['u2']=Temp

print(Final)

Temp.clear()
Temp[3] = NOTOK
Final['u3']=Temp

print(Final)

would like to know why last print out overwrite previous one, need help. it related to my current project, this is i use simplfy term, how to make u3 dict(NOTOK) not replacing u1 and u2 content(OK).

Actual result

{'u1': {1: ['OK', 'OK']}}
{'u1': {2: ['OK', 'OK']}, 'u2': {2: ['OK', 'OK']}}
{'u1': {3: ['NOTOK', 'NOTOK']}, 'u2': {3: ['NOTOK', 'NOTOK']}, 'u3': {3: ['NOTOK', 'NOTOK']}}

Expected result

{'u1': {1: ['OK', 'OK']}}
{'u1': {2: ['OK', 'OK']}, 'u2': {2: ['OK', 'OK']}}
{'u1': {3: ['OK', 'OK']}, 'u2': {3: ['OK', 'OK']}, 'u3': {3: ['NOTOK', 'NOTOK']}}

1 Answers1

0

use .copy()

Temp = {}
Final = {}

OK =['OK','OK']
NOTOK =['NOTOK','NOTOK']

Temp[1] = OK.copy()
Final['u1']=Temp.copy()

print(Final)

Temp.clear()
Temp[2] = OK.copy()
Final['u2']=Temp.copy()

print(Final)

Temp.clear()
Temp[3] = NOTOK.copy()
Final['u3']=Temp.copy()

print(Final)
sahasrara62
  • 10,069
  • 3
  • 29
  • 44