Python - Comparar/ordenar/eliminar elementos lista

 
Vista:
sin imagen de perfil
Val: 4
Ha disminuido su posición en 20 puestos en Python (en relación al último mes)
Gráfica de Python

Comparar/ordenar/eliminar elementos lista

Publicado por chit00 (3 intervenciones) el 19/09/2019 21:17:41
Hola, dada la siguiente lista:
1
lista1=[["a",1],["b",1],["c",1],["a",4],["b",7]]

Como puedo hacer para obtener la siguiente salida:
1
[["a",5],["b",8],["c",1]]

Osea comparar el primer subelemento de los elementos de la lista, si son iguales sumar el segundo subelemento de los repetidos y unificar los elementos, para agregarlos a la lista junto con los que no se repiten.
Quería saber si se puede hacer con listas o tuplas, logre hacerlo con diccionarios, pero quería saber si se puede con listas ya que no logro dar con el código. Soy nuevo en esto se agradece cualquier tipo de ayuda.

En este sitio me pasaron el siguiente código, pero tengo duda de como funciona algunas lineas.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#En la primera linea crea las 2 variables de tipo lista y le asigna un valor, lo que no entiendo es el porque el ultimo elemento vacio de la lista.
 
lista1,lista2=[["a",1],["b",1],["c",1],["a",4],["b",7]],[ ]<<<<< este elemento, no entiendo el porque
 
#Recorrer, sorted para ordenar(en que atributo se basa para ordenar?), set es para transformar de lista a conjunto no?, no entiendo esta parte>>([Cont2[0] for Cont2 in lista1])): creo que si entiendo esto, puedo entender las lineas restantes.
 
for Cont in sorted(set([Cont2[0] for Cont2 in lista1])):
 
Suma=0
 
for Cont3 in lista1:
 
if Cont in Cont3[0]: Suma +=Cont3[1]
 
lista2.append([str(Cont),Suma])
 
print(lista2)

Si alguien me puede decir/aconsejar/guiar sobre que funciones o comandos debo informarme para resolver esta clase de problemas, me seria de gran ayuda. Repito soy nuevo en esto, y cualquier tipo de orientacion es util.

Saludos y gracias de antemano.
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 joel
Val: 3.475
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Comparar/ordenar/eliminar elementos lista

Publicado por joel (901 intervenciones) el 20/09/2019 08:35:10
La linea en la que tienes dudas... esta:
lista1,lista2=[["a",1],["b",1],["c",1],["a",4],["b",7]],[ ]

es lo mismo que definir las dos variables así:
1
2
lista1=[["a",1],["b",1],["c",1],["a",4],["b",7]]
lista2=[ ]


Aquí tienes una manera muy manual de hacerlo... de seguro hay alguna mejor manera...
1
2
3
4
5
6
7
8
9
10
11
lista1,lista2=[["a",1],["b",1],["c",1],["a",4],["b",7]],[ ]
 
last=""
lista1.sort()
for lista in lista1:
    if last!=lista[0]:
        lista2.append(lista)
        last=lista[0]
    else:
        lista2[-1][1]+=lista[1]
print(lista2)
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