django 我可以只通过queryset上的一个循环创建两个字典吗

nukf8bse  于 2022-12-20  发布在  Go
关注(0)|答案(1)|浏览(120)

这是我现在的代码:

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

我想知道是否有一种方法可以只用一个循环来创建这两个dict。或者有没有另一种更有效的方法可以做到。
编辑以了解更多背景:

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
zzlelutf

zzlelutf1#

一种方法是:

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()一次,而不是两次。

相关问题