Можно ли создать 2 словаря только из одного цикла по набору запросов

Вот мой код на данный момент :

booking_data = {p: 0 for p in vehicle_category.types.all()}
vehicle_type_mapping = {k.id: k for k in vehicle_category.types.all()}

Интересно, есть ли способ создать эти 2 диктанта только с помощью одного цикла? Или есть другой более эффективный способ, который я могу сделать.

Отредактировано для большего контекста:

    for vehicle_category in VehicleCategory.objects.prefetch_related('types').order_by('name'):
        booking_data = {p: 0 for p in vehicle_category.types.all()}
        vehicle_type_mapping = {k.id: k for k in vehicle_category.types.all()} 
        completed_booking_data[vehicle_category] = booking_data

Один подход:

booking_data = {}
vehicle_type_mapping = {}
for r in vehicle_category.types.all():
    vehicle_type_mapping[r.id] = r
    booking_data[r] = 0

альтернатива:

booking_data = dict.fromkeys(vehicle_category.types.all(), 0)
vehicle_type_mapping = {k.id: k for k in booking_data}

Оба решения вызывают vehicle_category.types.all() только один раз, а не дважды.

Вернуться на верх