Я бы посоветовал использовать словарь. Указанный выбранный вывод не является наиболее подходящим способом отображения данных. Один из способов отфильтровать список:
cars = [['alfa-romero', 'convertible'],
['alfa-romero', 'convertible'],
['alfa-romero', 'hatchback'],
['audi', 'sedan'],
['audi', 'sedan'],
['audi', 'sedan'],
['audi', 'sedan'],
['audi', 'wagon'],
['audi', 'sedan']]
cars_dict = {}
for car in cars: # loop through each car
if not(car[0] in list(cars_dict.keys())): # if the make has not occurred before make dictionary
cars_dict[car[0]] = {}
cars_dict[car[0]][car[1]] = 1
else:
if car[1] in list(cars_dict[car[0]].keys()):
cars_dict[car[0]][car[1]] += 1
else:
cars_dict[car[0]][car[1]] = 1 #if the type has not occurred before than make dictionary
print(cars_dict)
, который выдает:
{'alfa-romero': {'convertible': 2, 'hatchback': 1}, 'audi': {'sedan': 5, 'wagon': 1}}
ie словарь словарей. Доступ к car_dict [производитель] [тип]. Ключи первого словаря - это марка автомобиля, а ключи второго - тип автомобиля.
Если вывод требуется в указанном вами формате, вы можете использовать следующее для преобразования cars_dict словарь в список обязательных выходов:
required_output = []
for maker in cars_dict.keys():
for type_of_car in cars_dict[maker].keys():
required_output.append([str(maker) + " --- " + str(type_of_car), cars_dict[maker][type_of_car]])
print(required_output)