Python - Diccionario en python, como sumar los value de keys?

 
Vista:

Diccionario en python, como sumar los value de keys?

Publicado por Usodiario (3 intervenciones) el 26/06/2020 21:14:36
Hola llevo dos días y no entiendo muy bien como hacerlo, alguien me ayuda por favor?

Necesito obtener la suma de cada venta por año:

1
diccionario = { "venta1":["2008","4","3"], "venta4":["2015","2","8"], "venta1":["2012","6","4"], "venta3":["2003","4","3"], "venta2":["2020","8","13"], "venta1":["2008","6","7"] }


Salida

venta1 en el 2008 = 10 y 10 (es la suma de las venta1 del 2008)
venta1 en el 2012 = 6 y 4 (es la suma de las ventas1 del 2012, solo hay un "keys")
venta4 en el 2015 = 2 y 8
venta3 en el 2003 = 4 y 3

Muchas gracias
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

Diccionario en python, como sumar los value de keys?

Publicado por yo (1 intervención) el 26/06/2020 21:48:43
hola:
ese diccionario tiene un gran poblema y es que tiene claves repetidas, se trata de que haya una sola clave(key), sin importar los valores, o sea que varias claves con "venta1" ya vamos mal.
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

Diccionario en python, como sumar los value de keys?

Publicado por Usodiario (3 intervenciones) el 26/06/2020 23:49:54
Tengo un archivo.txt

En ese archivo tengo las siguientes lineas desordenadas:

venta, año, cantidad, cantidad

venta1,2008,4,3
venta4,2015,2,8
venta1,2012,6,4
venta3,2003,4,3
venta2,2020,8,13
venta1,2008,6,7


Ese archivo lo llevo a diccionario en memoria con:

1
2
3
4
5
6
7
lista = {}
with open("archivo.txt", "r") as listas:
    for linea in listas:
        linea = linea.replace("\n","")
        datos = linea.split(",")
        ventas = datos.pop(0)
        lista[ventas] = datos


Me genera el diccionario:

1
2
3
4
5
6
7
8
diccionario = {
"venta1":["2008","4","3"],
"venta4":["2015","2","8"],
"venta1":["2012","6","4"],
"venta3":["2003","4","3"],
"venta2":["2020","8","13"],
"venta1":["2008","6","7"]
}

Ahora lo que debo hacer es obtener la suma de cada venta por año.


Que hago mal?
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

Diccionario en python, como sumar los value de keys?

Publicado por Usodiariom (3 intervenciones) el 27/06/2020 00:15:49
Me equivoque hice todo mal


1
2
3
4
5
6
lista = {}
with open("archivo.txt", "r") as listas:
      for linea in listas:
          linea = linea.replace("\n","")
          datos = linea.split(",")
print(lista)


Genera:

1
2
3
4
5
6
7
8
diccionario = {
["venta1","2008","4","3"],
["venta4","2015","2","8"],
["venta1","2012","6","4"],
["venta3","2003","4","3"],
]"venta2","2020","8","13"],
["venta1","2008","6","7"]
}
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
Imágen de perfil de joel
Val: 3.475
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Diccionario en python, como sumar los value de keys?

Publicado por joel (901 intervenciones) el 27/06/2020 13:01:53
Hola Usodiariom, te voy a preparar un código haber si te sirve...
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
Imágen de perfil de joel
Val: 3.475
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Diccionario en python, como sumar los value de keys?

Publicado por joel (901 intervenciones) el 27/06/2020 13:18:27
Haber si te sirve este código:
1
2
3
4
5
6
7
8
9
dic = {}
with open("archivo.txt", "r") as listas:
    for linea in listas:
        linea = linea.strip().split(",")
        key="{}-{}".format(linea[0], linea[1])
        values=list(map(lambda x: int(x), linea[2:]))
        dic[key] = values if not key in dic else list(map(lambda x, y: x+y, dic[key], values))
 
print (dic)

Te devuelve:
1
2
3
4
5
6
7
{
    'venta1-2008': [10, 10],
    'venta4-2015': [2, 8],
    'venta1-2012': [6, 4],
    'venta3-2003': [4, 3],
    'venta2-2020': [8, 13]
}

también se podría hacer algo así si te interesa:
1
2
3
4
5
6
diccionario = {
"venta1":{"2008":["10","10"], "2012":["6","4"]},
"venta4":{"2015":["2","8"]},
"venta3":{"2003":["4","3"]},
"venta2":{"2020":["8","13"]},
}
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