Nerede yanlış yapıyorum?

Merhaba, şu kodu çalıştırabilir misiniz ?

ögrt2 = {
   "Mustafa": [[1, 1, 1, 1, 1],[0,0,0]],
   "Tuğrul":  [[1, 1, 1, 1, 1],[0,0,0]],
   "Sadık":   [[0, 0, 0, 0, 1],[0,0,0]],
   "Hakan":   [[1, 1, 1, 1, 1],[0,0,0]],
   "Ahmet":   [[0, 0, 0, 0, 1],[0,0,0]],
   "Rıza":    [[0, 0, 0, 0, 1],[0,0,0]],
   "Yılmaz":  [[1, 1, 1, 1, 1],[0,0,0]],
   "Deniz":   [[0, 0, 0, 1, 1],[0,0,0]]
}

yerler2 = {
   "Ön bahçe": [],
   "Arka Bahçe": [],
   "1. Kat": []
}

nöbet2 = {
   "paz": list(),
   "sal": list(),
   "çar": list(),
   "per": list(),
   "cum": list()
}

nöbet = nöbet2.copy()
ögrt = ögrt2.copy()
yerler = yerler2.copy()

def foo(ögrt, yerler):
   gun = ""
   v = ""
   for ö in ögrt:
   	ögrt[ö][1][0] = sum(ögrt[ö][0][0:5])

   f= list()
   def torba(ögrt, v, nöbet, gun):
   	global f
   	temp = dict()

   	m = list(filter(lambda x: ögrt[x][0][v]==1, ögrt))

   	for ö in ögrt:
   		if ö in m:
   			temp[ö] = ögrt[ö].copy()

   	f = sorted(temp.items(), key=lambda x:(x[1][1][2] ,x[1][1][0], x[1][1][1]))

   	for i in f:
   		if i[0][0] not in nöbet[gun]:
   			return f[0][0]

   for gun in nöbet:
   	v = 0

   	for i in range(len(yerler)):

   		if gun=="paz": v=0
   		elif gun=="sal": v=1
   		elif gun=="çar": v=2
   		elif gun=="per": v=3
   		elif gun=="cum": v=4

   		ö = torba(ögrt, v, nöbet, gun)
   		if ö!=None:

   			nöbet[gun].append(ö)
   			ögrt[ö][1][1] += 1
   			ögrt[ö][1][2] += 1
   			ögrt[ö][0][v] = 0
   		
   print("-"*50)
   print(nöbet)
   return list(nöbet.values())

print("nöbet  ",nöbet2)
foo(ögrt, yerler)
print("nöbet2 degişti  ",nöbet2)

Sorun şu siz bir liste veri yapısı oluşturup bunu bir değişkene atadığınız zaman, bu değişken atamış olduğunuz listeyi işaret ediyor. Örneğin a=list((1,2,3)) şeklinde yazdığınız ifade şu anlama geliyor a değişkeni hafızada list((1,2,3)) veri yapısına işaret etmekte. Sonra b=a dediğiniz zaman hem a hem de b hafızada aynı yere yani aynı list((1,2,3))'e işaret etmekte bundan dolayı siz a değişkeninde değişiklik yaparsanız mesela listeye yeni eleman örneğin 4 eklerseniz list((1,2,3)) son haliyle list((1,2,3,4)) olacaktır. b değişkenimizde list((1,2,3))'ü işaret ettiğinden dolayı b’nin son hali ise list((1,2,3,4)) olacaktır Sizin kodunuzda da bu tür bir durum var. Programınıza copy modülünü import ettikten sonra

nöbet = copy.deepcopy(nöbet2)
ögrt = copy.deepcopy(ögrt2)
yerler = copy.deepcopy(yerler2)

şeklinde deneyin sorun o zaman çözülecektir.