Hola, llevo más de 2 horas con un problema en Python que no consigo solucionar y lo que es peor no consigo ver donde se encuentra el problema. Explico el problema.
Dentro del bucle for, en una lista de diccionarios compruebo si está un diccionario que tengan una key de nombre id con un valor determinado. Si se encuentra se copia el diccionario y se elimina de la lista. Posteriormente este diccionario es copiado a otro diccionario y sobre este nuevo diccionario se aplican cambios. Pues bien al aplicarse cambios en unas keys se pierden los valores de la copia... Creo que puede ser un problema con la eliminación del diccionario de la lista o las copias de diccionarios que hago.... pero he intentado mil cosas y no he conseguido nada. Pego el código y el resultado de las pruebas. Gracias!! CODIGO ======= 51 # comprobar si hay un id idéntico en la lista de llamadas 52 for i in range(len(calls)): 53 if calls[i]['id'] == id: 54 if calls[i]['event'] == "ENTERQUEUE" or\ 55 calls[i]['event'] == "CONNECT": 56 print "DENTRO DEL BUCLE" 57 print "oldcall1" 58 for key in keys: 59 oldcall[key] = calls[i][key] 60 print oldcall 61 calls.pop(i) 62 break 63 else: 64 print >> sys.stderr, "Error: Se va a sobreescribir un evento\ 65 no considerado en el script %s" % call['event'] 66 sys.exit(1) 67 if oldcall: 68 print "oldcall2" 69 print oldcall 70 for key in keys: 71 newcall[key] = oldcall[key] 72 print "newcall1" 73 print newcall ...... 81 elif event == "CONNECT": 82 newcall['event'] = line.split('|')[4] 83 newcall['agent'] = line.split('|')[3].split('@')[0].split('/')[1] 84 newcall['waittime'] = line.split('|')[5] DEBUG ======= DENTRO DEL BUCLE oldcall1 {'waittime': '', 'callerid': '', 'calltime': '', 'agent': '', 'event': 'ENTERQUEUE', 'queue': '17810', 'inposition': '', 'outposition': '', 'date': '1283941447', 'id': '1283941434.31503'} oldcall2 {'waittime': '', 'callerid': '', 'calltime': '', 'agent': '', 'event': 'ENTERQUEUE', 'queue': '17810', 'inposition': '', 'outposition': '', 'date': '1283941447', 'id': '1283941434.31503'} newcall1 {'waittime': '', 'callerid': '', 'calltime': '', 'agent': '', 'event': 'ENTERQUEUE', 'queue': '17810', 'inposition': '', 'outposition': '', 'date': '1283941447', 'id': '1283941434.31503'} newcall2 {'waittime': '119', 'callerid': '', 'calltime': '', 'agent': '17816', 'event': 'CONNECT', 'queue': '', 'inposition': '', 'outposition': '', 'date': '', 'id': ''} -- Christian Pinedo Zamalloa (zako) PGP keyID: 0x828D0C80 Fingerprint: 7BFF 4105 F46B 7977 BD96 348C 1007 4FF8 828D 0C80 _______________________________________________ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/