Есть ли способ объединить два цикла for в один?
Я искал решение, подобное этому. Но это не сработало:
ticket_stats_by_event = {
x['pk']: {'sold_tickets': x['sold_tickets'], 'available_tickets: y['avaiable_tickets']}
for x, y in sold_tickets_by_event, available_tickets_by_event
}
Результат будет:
<EventQuerySet [{'pk': 6, 'organizer': 1, 'available_tickets': 20, 'sold_tickets': 2}, {'pk': 1, 'organizer': 1, 'available_tickets': 1765746, 'sold_tickets': 2116}, {'pk': 5, 'organizer': 1, 'available_tickets': 10, 'sold_tickets': 1}, {'pk': 4, 'organizer': 1, 'available_tickets': 60, 'sold_tickets': 4}]>
Здесь полная функция:
def ticket_stats_by_event(self, organizer):
sold_tickets_by_event = [
x for x in self.sold_tickets if x['organizer'] == organizer.pk
]
# <EventQuerySet [{'pk': 6, 'organizer': 1, 'sold_tickets': 1}, {'pk': 1, 'organizer': 1, 'sold_tickets': 529}, {'pk': 5, 'organizer': 1, 'sold_tickets': 1}, {'pk': 4, 'organizer': 1, 'sold_tickets': 2}]>
available_tickets_by_event = [
x for x in self.available_tickets if x['organizer'] == organizer.pk
]
# <EventQuerySet [{'pk': 1, 'organizer': 1, 'available_tickets': 1721}, {'pk': 4, 'organizer': 1, 'available_tickets': 30}, {'pk': 5, 'organizer': 1, 'available_tickets': 10}, {'pk': 6, 'organizer': 1, 'available_tickets': 20}]>
ticket_stats_by_event = {
x['pk']: {'sold_tickets': x['sold_tickets']}
for x in sold_tickets_by_event
}
for item in available_tickets_by_event:
pk = item.pop('pk')
ticket_stats_by_event[pk].update(item)
return ticket_stats_by_event