Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django:组合两个for循环_Python_Django - Fatal编程技术网

Python Django:组合两个for循环

Python Django:组合两个for循环,python,django,Python,Django,有没有办法将两个for循环组合成一个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 } 结果将是: <Event

有没有办法将两个for循环组合成一个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
def ticket\u stats\u by\u event(自我、组织者):
按活动售出的门票=[
如果x['organizer']==organizer.pk,则在self.self_门票中以x换x
]
# 
可用的\u票证\u按\u事件=[
如果x['organizer']==organizer.pk,则在自助可用的\u票证中x代表x
]
# 
票证统计按事件={
x['pk']:{'selled_tickets':x['selled_tickets']}
在每个活动中售出的x张门票
}
对于每个活动的可用门票中的项目:
pk=项目.pop('pk')
按事件[pk]记录的票证统计信息。更新(项目)
回程车票按事件统计

您可以只使用一个循环而不是四个循环来编写这样的函数:

def ticket_stats_by_event(self, organizer):

    ticket_stats_by_event = {}

    for st, at in zip(self.sold_tickets, self.available_tickets):

        # if organizer is not same in any then skip
        if organizer.pk != st['organizer'] or organizer.pk != at['organizer']:
            continue

        st_pk = st['pk']
        st_value = {'sold_tickets': st['sold_tickets'], 'organizer': st['organizer']}
        at_pk = at['pk']
        at_value = {'available_tickets': at['available_tickets'], 'organizer': at['organizer']}

        # add values from sold_tickets_by_event
        if st_pk in ticket_stats_by_event:
            ticket_stats_by_event[st_pk].update(st_value)
        else:
            ticket_stats_by_event[st_pk] = st_value
        # add values from available_tickets_by_event
        if at_pk in ticket_stats_by_event:
            ticket_stats_by_event[at_pk].update(at_value)
        else:
            ticket_stats_by_event[at_pk] = at_value

    return ticket_stats_by_event

此外,您可以将其分为三个循环,在第一个循环和第二个循环中,您可以获取特定组织的已售出和可用门票。我没有使用一行函数使其更具可读性。

请展示您的模型并描述您试图实现的目标,而不是演示您如何做某事。