Python - necesito ayuda

 
Vista:
sin imagen de perfil

necesito ayuda

Publicado por Ivan (4 intervenciones) el 03/12/2021 05:53:00
Necesito ayuda, me sale [{'300': 10}, {'300': 21}, {'300': 4}] de salida y debería ser [{'300': 10}, {'400': 21}, {'500': 4}] (me refiero a los valores del diccionario, 300, 400 y 500 porque los otros son aleatorios). muchas gracias de antemano

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
import random
def automatico():
    lista = []
    for i in range(200):
        lista.append(random.randint(300, 600))
    return lista
 
def esprimo(l):
    primos = []
    for i in l:
        p = 0
        if i == 1:
          primos.append(i)
        else:
          for j in range(1,i+1):
            if i % j == 0:
              p += 1
          if p == 2:
            primos.append(i)
    return primos
 
def ordenar(l):
    cont = 0
    cont1 = 0
    cont2 = 0
    listatotal = []
    trescientos = []
    cuatrocientos = []
    quinientos = []
    for i in range(len(l)):
        if l[i]<400:
            cont = cont+1
        elif l[i]<500:
            cont1 = cont1+1
 
        elif l[i]<601:
            cont2 = cont2+1
    trescientos.append(cont)
    cuatrocientos.append(cont1)
    quinientos.append(cont2)
    listatotal.append(trescientos)
    listatotal.append(cuatrocientos)
    listatotal.append(quinientos)
 
    return listatotal
 
def dato_a_diccionario(lista):
    lista2 = []
    valores = ["300", "400", "500"]
    for i in range(len(lista)):
        dicc = dict(zip(valores, lista[i]))
        lista2.append(dicc)
    print(lista2)
 
def main():
    listarandom = automatico()
    primos = esprimo(listarandom)
    c = ordenar(primos)
    dato_a_diccionario(c)
 
if __name__=="__main__":
    main()
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de 7aamin
Val: 11
Ha disminuido su posición en 6 puestos en Python (en relación al último mes)
Gráfica de Python

necesito ayuda

Publicado por 7aamin (117 intervenciones) el 03/12/2021 06:21:44
Porque estás poniendo un zip() dentro de un iterador.. zip() lo que hace es fusionar dos listas de igual longitud.

Lo que puedes hacer es crear el diccionario normalmente sin usar zip()

1
2
3
4
5
6
lista = ["uno", "dos", "tres"]
dicc = {}
for i, v in enumerate(lista):
    valores = ["300", "400", "500"]
    dicc[valores[i]] = v
print(dicc)

O si estas seguro que lista tendrá la misma longitud que valores, usar zip() sin necesidad de un iterador
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

necesito ayuda

Publicado por Ivan (4 intervenciones) el 03/12/2021 13:24:59
muchisimas gracias bro
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar