Problema con suma de datos dentro de un diccionario
Publicado por Fawkes (2 intervenciones) el 18/10/2020 05:52:16
recibo este diccionario para ejecutar mi código:
necesito sumar las notas solamente de la misma facultad, un acumulado de notas de arquitectura, diseño y medicina, hay muchos mas diccionarios y carreras claro, no podría hacerlo uno a uno
aquí está el pedazo de código donde necesito hacerlo, donde están los cuatro # pero así como lo hice se suman las notas de todas las carreras


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
print(promedio_facultades({
20170136837:{
"nombres" : "Jorge Juan",
"apellidos" : "Moreno, López",
"documento" : 88481595,
"programa" : "ARQU",
"materias" : [
{
"facultad" : "Arquitectura",
"codigo" : "ARQU-8218",
"nota" : 4.49,
"creditos" : 3,
"retirada" : "No",
},
{
"facultad" : "Arquitectura",
"codigo" : "ARQU-2113",
"nota" : 2.97,
"creditos" : 2,
"retirada" : "Si",
},
{
"facultad" : "Arquitectura",
"codigo" : "ARQU-5048",
"nota" : 4.26,
"creditos" : 0,
"retirada" : "No",
},
]
},
20130225137:{
"nombres" : "Sara Carolina",
"apellidos" : "Gómez, Fernández",
"documento" : 58770043,
"programa" : "ARQD",
"materias" : [
{
"facultad" : "Arquitectura",
"codigo" : "ARQD-7738",
"nota" : 3.36,
"creditos" : 3,
"retirada" : "No",
},
{
"facultad" : "Arquitectura",
"codigo" : "ARQD-9115",
"nota" : 2.62,
"creditos" : 1,
"retirada" : "No",
},
{
"facultad" : "Arquitectura",
"codigo" : "ARQD-7698",
"nota" : 1.59,
"creditos" : 4,
"retirada" : "Si",
},
]
},
20110274333:{
"nombres" : "Carolina Paula",
"apellidos" : "Ochoa, López",
"documento" : 82364435,
"programa" : "DIMD",
"materias" : [
{
"facultad" : "Diseño",
"codigo" : "DIMD-7972",
"nota" : 3.15,
"creditos" : 1,
"retirada" : "No",
},
]
},
20200116062:{
"nombres" : "Sara Camila",
"apellidos" : "Martínez, Gómez",
"documento" : 40079000,
"programa" : "DIGR",
"materias" : [
{
"facultad" : "Diseño",
"codigo" : "DIGR-9331",
"nota" : 4.0,
"creditos" : 3,
"retirada" : "No",
},
{
"facultad" : "Diseño",
"codigo" : "DIGR-3530",
"nota" : 3.4,
"creditos" : 3,
"retirada" : "No",
},
{
"facultad" : "Medicina",
"codigo" : "MEDI-8548",
"nota" : 3.1,
"creditos" : 3,
"retirada" : "No",
},
{
"facultad" : "Medicina",
"codigo" : "MEDI-9771",
"nota" : 3.91,
"creditos" : 2,
"retirada" : "No",
},
]
}
}
necesito sumar las notas solamente de la misma facultad, un acumulado de notas de arquitectura, diseño y medicina, hay muchos mas diccionarios y carreras claro, no podría hacerlo uno a uno
aquí está el pedazo de código donde necesito hacerlo, donde están los cuatro # pero así como lo hice se suman las notas de todas las carreras
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
def nuevo_dicc(dicc, contando_externos : bool = True):
nota_x_cred_temp = 0
cred_temp = 0
nota_temp = 0
for llave, value in dicc.items():
materias_temp = value["materias"]
for i in range (len(materias_temp)):
if contando_externos == False:
value_temp = str(llave)
#posible if len(materias_temp == 0 or materias_temp == 1 and materias_temp[i]["creditos"] =0)
if materias_temp[i]["codigo"][0:4] == value["programa"] and value_temp[4:6] != "05" and materias_temp[i]["retirada"] == "No":
pass
#print("Entra False",value["materias"][i],i)
if contando_externos == True:
value_temp = str(llave)
if materias_temp[i]["retirada"] == "No" and materias_temp[i]["creditos"] !=0:
if materias_temp[i]["facultad"] in nom_facultades(dicc):
# nota_x_cred_temp = nota_x_cred_temp + materias_temp[i]["nota"] * materias_temp[i]["creditos"]
# cred_temp = cred_temp + materias_temp[i]["creditos"]
# nota_temp = round((nota_x_cred_temp / cred_temp),2)
# print(nota_x_cred_temp, cred_temp)
Valora esta pregunta


0