Используйте collections.defaultdict
для подсчета билетов на рейс:
from collections import defaultdict
ticket_list=["AI567:MUM:LON:014","AI077:MUM:LON:056", "BA896:MUM:LON:067", "SI267:MUM:SIN:145","AI077:MUM:CAN:060","SI267:BLR:MUM:148","AI567:CHE:SIN:015","AI077:MUM:SIN:050","AI077:MUM:LON:051","SI267:MUM:SIN:146"]
flight_ticket_counts = defaultdict(int)
for ticket in ticket_list:
flight_no, *_ = ticket.split(":")
flight_ticket_counts[flight_no] += 1
print([f"{k}:{v}" for k, v in flight_ticket_counts.items()])
# ['AI567:2', 'AI077:4', 'BA896:1', 'SI267:3']
или в качестве однострочного, используя collections.Counter
:
from collections import Counter
flight_ticket_counts = Counter(ticket.split(":")[0] for ticket in ticket_list)
print([f"{k}:{v}" for k, v in flight_ticket_counts.items()])
# ['AI567:2', 'AI077:4', 'BA896:1', 'SI267:3']
Если вы хотите количество пассажиров, то вы можете изменить вышеуказанный подход, чтобы сделать так:
flight_passenger_counts = defaultdict(int)
for flight in ticket_list:
flight_no, _, _, no_passengers = flight.split(":")
flight_passenger_counts[flight_no] += int(no_passengers)
print([f"{k}:{v}" for k, v in flight_passenger_counts.items()])
# ['AI567:29', 'AI077:217', 'BA896:67', 'SI267:439']