The problem I have is that in a list that believes a merger of two lists with dictionaries, I repeat the records then what I'm doing is that I verify which are repeated to put the missing values in the first in the first record, but when doing this when in the list there are more values with the same values in the second position they are added to all.
import json
print("Obteniendo información")
#obteniendo Valores de los Json
obtenerProfesores = json.loads(open("profesores.json").read())
obtenerAsignaturas = json.loads(open("asignaturas.json").read())
def imprimir(listas):
for x in range(len(listas)):
print (listas[x])
dataFusion = []
a = 0
# se obtienen los diccionarios de los json y se guardan en una lista de fusion
for dict in obtenerProfesores:
for dict2 in obtenerAsignaturas:
nomValue = dict['nombre']
asigValue = dict['asignaturas']
dispValue = dict['disponibilidad']
hrsValue = dict['horas']
idasigValue = dict2['id']
nomasigValue = dict2['nombre']
hrsemValue = dict2['horas_semana']
if len(dict['asignaturas']) == 1:
if dict['asignaturas'][0] == dict2['nombre']:
dataFusion.append([nomValue, idasigValue])
if len(asigValue) > 1:
for e in dict['asignaturas']:
if e == dict2['nombre']:
dataFusion.append([nomValue, idasigValue])
#aqui aparecen los datos duplicados pero con la parte de las asignaturas diferentes
imprimir(dataFusion)
print("------------------------------------------------------------------")
listaNueva = []
#Se intenta eliminar los datos repetidos
for i in range(1,len(dataFusion)):
if( i < len(dataFusion)-1):
x = dataFusion[i-1]
x1 = dataFusion[i]
x2 = dataFusion[i+1]
if( x[0] == x1[0]):
x[1].extend(x1[1])
listaNueva.append(x)
else:
if(x[0] != x1[0] and x2[0] == x1[0]):
next
else:
listaNueva.append(x1)
else:
x = dataFusion[i-1]
x1 = dataFusion[i]
if( x[0] == x1.keys()[0]):
x[1].extend(x1[1])
listaNueva.append(x)
else:
listaNueva.append(x1)
#else:
# listaNueva.append(x)
imprimir(listaNueva)
the jsons are the following asignaturas.json
[
{
"id":["Qu1","Qui2","Qui3"],
"nombre":"Quimica",
"grado":1,
"horas_semana":4,
"grupo": [1,2,3]
},
{
"id":["ALi1","ALi2","ALi3"],
"nombre":"Algebra lineal",
"grado":1,
"horas_semana":5,
"grupo": [1,2,3]
},
{
"id":["FC1","FC2","FC3"],
"nombre":"Fundamentos de computo",
"grado":1,
"horas_semana":4,
"grupo": [1,2,3]
},
{
"id":["AL1","AL2","AL3"],
"nombre":"Algoritmos",
"grado":1,
"horas_semana":7,
"grupo": [1,2,3]
},
{
"id":["MD1","MD2","MD3"],
"nombre":"Matematicas discretas",
"grado":1,
"horas_semana":6,
"grupo": [1,2,3]
},
{
"id":["EO1","EO2","EO3"],
"nombre":"Expresion oral y escrita",
"grado":1,
"horas_semana":4,
"grupo": [1,2,3]
},
{
"id":["CI1","CI2"],
"nombre":"Calculo integral",
"grado":4,
"horas_semana":6,
"grupo": [4,5]
},
{
"id":["ISA1","ISA2"],
"nombre":"Ing Sw Asistido por Computadora",
"grado":4,
"horas_semana":6,
"grupo": [4,5]
},
{
"id":["PW1","PW2"],
"nombre":"Programacion web",
"grado":4,
"horas_semana":7,
"grupo": [4,5]
},
{
"id":["IRS1","IRS2"],
"nombre":"Ingenieria de requerimientos de software",
"grado":4,
"horas_semana":6,
"grupo": [4,5]
},
{
"id":["Re1","Re2"],
"nombre":"Redes",
"grado":4,
"horas_semana":6,
"grupo": [4,5]
},
{
"id":["IE1","IE2","IE3"],
"nombre":"Ingenieria economica",
"grado":7,
"horas_semana":4,
"grupo": [6,7,8]
},
{
"id":["CI1","CI2","CI3"],
"nombre":"Compiladores e interpretes",
"grado":7,
"horas_semana":5,
"grupo": [6,7,8]
},
{
"id":["MS1","MS2","MS3"],
"nombre":"Mantenimiento de sw",
"grado":7,
"horas_semana":4,
"grupo": [6,7,8]
},
{
"id":["CS1","CS2","CS3"],
"nombre":"Calidad de sw",
"grado":7,
"horas_semana":4,
"grupo": [6,7,8]
},
{
"id":["RA1","RA2","RA3"],
"nombre":"Realidad aumentada",
"grado":7,
"horas_semana":4,
"grupo": [6,7,8]
}]
Profesores.json
'
[{
"id": "1",
"profesor":"PA",
"nombre":"christian baladimir",
"asignaturas":["Redes", "Algebra lineal"],
"horas": "15",
"disponibilidad":
[[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0]]
},
{
"id":2,
"profesor":"PA",
"nombre":"claudia",
"asignaturas":["Expresion oral y escrita"],
"horas":15,
"disponibilidad":
[[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[0, 1, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0]]
},
{
"id":3,
"profesor":"PA",
"nombre":"Maria Guadalupe",
"asignaturas":["Quimica", "Calculo integral"],
"horas":15,
"disponibilidad":
[[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0]]
},
{
"id":4,
"profesor":"PA",
"nombre":"Joel",
"asignaturas":["Algebra lineal", "Fundamentos de computo"],
"horas":15,
"disponibilidad":
[[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0]]
},
{
"id":5,
"profesor":"PA",
"nombre":"Yolanda",
"asignaturas":["Algebra lineal"],
"horas":15,
"disponibilidad":
[[1, 1, 1, 1, 1],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0]]
},
{
"id":6,
"profesor":"PA",
"nombre":"J Bautista",
"asignaturas":["Matematicas discretas"],
"horas":15,
"disponibilidad":
[[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0]]
},
{
"id":7,
"profesor":"PA",
"nombre":"Octavio",
"asignaturas":["Programacion Web", "Mantenimiento"],
"horas":15,
"disponibilidad":
[[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0]]
},
{
"id":8,
"profesor":"PA",
"nombre":"Iracema",
"asignaturas":["Ingenieria economica"],
"horas":15,
"disponibilidad":
[[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[0, 0, 0, 0, 1],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0]]
},
{
"id":9,
"profesor":"PA",
"nombre":"Hugo",
"asignaturas":["Algoritmos", "Ing Sw Asistido por Computadora", "Mantenimiento"],
"horas":15,
"disponibilidad":
[[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0]]
},
{
"id":10,
"profesor":"PA",
"nombre":"Paul",
"asignaturas":["Calidad de sw","Ing Sw Asistido por Computadora"],
"horas":15,
"disponibilidad":
[[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0]]
},
{
"id":11,
"profesor":"PTC",
"nombre":"Liliana",
"asignaturas":["Ing de requerimientos de sw", "Estancias"],
"horas":15,
"disponibilidad":
[[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0]]
},
{
"id":12,
"profesor":"PTC",
"nombre":"Oscar",
"asignaturas":["Algoritmos", "Estancias"],
"horas":15,
"disponibilidad":
[[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0]]
},
{
"id":13,
"profesor":"PTC",
"nombre":"Felix",
"asignaturas":["Calculo", "Realidad aumentada"],
"horas":15,
"disponibilidad":
[[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0]]
},
{
"id":14,
"profesor":"PTC",
"nombre":"Hector",
"asignaturas":["Compiladores e interpretes"],
"horas":15,
"disponibilidad":
[[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0]]
}
]
The result it gives is the following
Obteniendo información
['christian baladimir', ['ALi1', 'ALi2', 'ALi3']]
['christian baladimir', ['Re1', 'Re2']]
['claudia', ['EO1', 'EO2', 'EO3']]
['Maria Guadalupe', ['Qu1', 'Qui2', 'Qui3']]
['Maria Guadalupe', ['CI1', 'CI2']]
['Joel', ['ALi1', 'ALi2', 'ALi3']]
['Joel', ['FC1', 'FC2', 'FC3']]
['Yolanda', ['ALi1', 'ALi2', 'ALi3']]
['J Bautista', ['MD1', 'MD2', 'MD3']]
['Iracema', ['IE1', 'IE2', 'IE3']]
['Hugo', ['AL1', 'AL2', 'AL3']]
['Hugo', ['ISA1', 'ISA2']]
['Paul', ['ISA1', 'ISA2']]
['Paul', ['CS1', 'CS2', 'CS3']]
['Oscar', ['AL1', 'AL2', 'AL3']]
['Felix', ['RA1', 'RA2', 'RA3']]
['Hector', ['CI1', 'CI2', 'CI3']]
------------------------------------------------------------------
['christian baladimir', ['ALi1', 'ALi2', 'ALi3', 'Re1', 'Re2', 'FC1', 'FC2', 'FC3']]
['claudia', ['EO1', 'EO2', 'EO3']]
['Maria Guadalupe', ['Qu1', 'Qui2', 'Qui3', 'CI1', 'CI2']]
['Joel', ['ALi1', 'ALi2', 'ALi3', 'Re1', 'Re2', 'FC1', 'FC2', 'FC3']]
['Yolanda', ['ALi1', 'ALi2', 'ALi3', 'Re1', 'Re2', 'FC1', 'FC2', 'FC3']]
['J Bautista', ['MD1', 'MD2', 'MD3']]
['Iracema', ['IE1', 'IE2', 'IE3']]
['Hugo', ['AL1', 'AL2', 'AL3', 'ISA1', 'ISA2']]
['Paul', ['ISA1', 'ISA2', 'CS1', 'CS2', 'CS3']]
['Oscar', ['AL1', 'AL2', 'AL3', 'ISA1', 'ISA2']]
['Felix', ['RA1', 'RA2', 'RA3']]
['Hector', ['CI1', 'CI2', 'CI3']]
and what is expected is that it be
['christian baladimir', ['ALi1', 'ALi2', 'ALi3', 'Re1', 'Re2']]
['claudia', ['EO1', 'EO2', 'EO3']]
['Maria Guadalupe', ['Qu1', 'Qui2', 'Qui3', 'CI1', 'CI2']]
['Joel', ['ALi1', 'ALi2', 'ALi3', 'FC1', 'FC2', 'FC3']]
['Yolanda', ['ALi1', 'ALi2', 'ALi3']]
['J Bautista', ['MD1', 'MD2', 'MD3']]
['Iracema', ['IE1', 'IE2', 'IE3']]
['Hugo', ['AL1', 'AL2', 'AL3', 'ISA1', 'ISA2']]
['Paul', ['ISA1', 'ISA2', 'CS1', 'CS2', 'CS3']]
['Oscar', ['AL1', 'AL2', 'AL3']]
['Felix', ['RA1', 'RA2', 'RA3']]
['Hector', ['CI1', 'CI2', 'CI3']]