Stack Overflow en español Asked by Jalkhov on December 22, 2020
La verdad batallé un poco para elegir el título de la pregunta, y aún no se si es del todo descriptivo o adecuado, así que me disculpo de antemano. Básicamente el problema lo tengo resuelto:
SeatsC = [(1, 'LAT'), (2, 'MOD'), (1, 'BET')]
Seats = {}
for x in SeatsC:
if x[0] in Seats:
if len(Seats[x[0]]) == 0:
Seats[x[0]] = []
Seats[x[0]].append(x[1])
else:
Seats[x[0]].append(x[1])
else:
Seats[x[0]] = []
Seats[x[0]].append(x[1])
print(Seats)
Esta es la salida:
{1: ['LAT', 'BET'], 2: ['MOD']}
Este código me sirve para lo que necesito, pero quisiera saber es si hay una forma más Pythonica de hacer eso, siento que el código es demasiado complejo y poco entendible.
En resumen tenemos una lista con elementos del tipo tupla, y estas tuplas en ocasiones van a tener coincidencias en cuanto su primer elemento, específicamente números del 1 al 5, y quiero como salida lo que ya pueden ver.
Puedes usar un defaultdict
para simplificar el manejo: creas un diccionario que retorna una lista vacía cuando usas una llave inexistente:
from collections import defaultdict
SeatsC = [(1, 'LAT'), (2, 'MOD'), (1, 'BET')]
dic = defaultdict(list)
[dic[a].append(b) for a, b in SeatsC]
print(dic)
Correct answer by Candid Moe on December 22, 2020
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP