Python как добавлять значения в словарь, без удаления предыдущего значения?

Мой код берет данные из БД, разделяет по марки и модели, и после для каждой модели подбирает свою марку. Но проблема в том, что последующее значение, удаляет предыдущее, как сохранить их все?

Вот БД

car model
Hava mx1
Haval xx100
BMW X5
BMW X6
BMW X3
Mersedes Q2
Mersedes Q1
Mersedes M3
Mersedes MM14
Mersedes hh1
Lada Kalina
Lada Kalina
Audi a8
Cherry GS21
Mersedes hh1
Mersedes Sclass
    class db_info:

    def take_info_from_db(self=None):
        key_colum =[]
        car_dicts ={}
        models = []
        for first_col in cursor.fetchall():
            key_colum.append(first_col[0])
            key_colum.append(first_col[1])
            if key_colum[1] not in car_dicts:
                car_dicts[str(key_colum[0])] = key_colum[1]
                key_colum.pop(0)
                key_colum.pop(0)

        car_dicts={key:[value] for key, value in car_dicts.items()}

        print(car_dicts)

db = db_info
print(db.take_info_from_db())

И на выход получаю это. Все бы хорошо, но в словарь сохраняется только последняя модель для определенной марки. Как исправить?

{'Haval': ['xx100'], 'BMW': ['X3'], 'Mersedes': ['Sclass'], 'Lada': ['Kalina'], 'Audi': ['a8'], 'Cherry': ['GS21']}


Ответы (1 шт):

Автор решения: gil9red

Я бы так заполнял словарь:

car_by_models = dict()

for car, model in cursor.fetchall():
    if car not in car_by_models:
        car_by_models[car] = []
    car_by_models[car].append(model)

print(car_by_models)

Вариант без распаковки полей в цикле:

for row in cursor.fetchall():
    car = row[0]
    model = row[1]
    if car not in car_by_models:
        car_by_models[car] = []
    car_by_models[car].append(model)

print(car_by_models)

Если использовать defaultdict, то можно без проверок:

from collections import defaultdict
...

car_by_models = defaultdict(list)

for car, model in cursor.fetchall():
    car_by_models[car].append(model)

print(car_by_models)
→ Ссылка