Python 如何获取for循环的计数并将其存储到for循环内部的字典中

Python 如何获取for循环的计数并将其存储到for循环内部的字典中,python,django,data-structures,Python,Django,Data Structures,我正在尝试获取每个if条件中for循环的计数,如果条件满足,它应该获取计数并将其存储在具有不同键的字典中。下面给出了示例代码,但它提供了不同的输出,而不是我想要的 def get(self, request, format=None): queryset = preshift.objects.filter(active=True,is_published=True,date_published=self.request.GET.get('date')).values()

我正在尝试获取每个if条件中for循环的计数,如果条件满足,它应该获取计数并将其存储在具有不同键的字典中。下面给出了示例代码,但它提供了不同的输出,而不是我想要的

def get(self, request, format=None):
        queryset = preshift.objects.filter(active=True,is_published=True,date_published=self.request.GET.get('date')).values()
        data = {}
        print('/////queryset_count///',queryset.count())
        pre_shift_count = 0
        for i in queryset:
            dt = i['date_published_local'].strftime("%H")
            if int(dt) in range(0,2):
                pre_shift_count+=1
                print('///1////',pre_shift_count)
                data["zero-2"]= pre_shift_count
            else:
                data["zero-2"] = 0

            if int(dt) in range(2,4):
                pre_shift_count+=1
                print('///2////',pre_shift_count)
                data["two-4"] = pre_shift_count
            else:
                data["two-4"] = 0

            if int(dt) in range(4,6):
                pre_shift_count+=1
                print('///3////',pre_shift_count)
                data["two-5"] = pre_shift_count
            else:
                data["two-5"] = 0
    
        return Response({"preshift":data})
它给我这样的输出

    ('/////queryset_count///',4)
    (////1//,1)
    (////3//,0)
    (////3//,1)
    (////3//,2)
    (////3//,3)
    (////3//,4)
    (////3//,5)
{
    "preshift":{
        "zero-2":1,
        "two-4":0,
        "two-5":4,
    }
}
我有四张唱片,但它正在打印5张,我不知道如何获得循环内部条件的完美计数 我想像这样在字典中存储数据

    ('/////queryset_count///',4)
    (////1//,1)
    (////3//,0)
    (////3//,1)
    (////3//,2)
    (////3//,3)
    (////3//,4)
    (////3//,5)
{
    "preshift":{
        "zero-2":1,
        "two-4":0,
        "two-5":4,
    }
}
我不知道如何获得for循环内部条件的完美计数

为了获得for循环的完美计数,我建议使用
Python
中的
enumerate()
内置函数。示例:

>>> for count, value in enumerate(values):
...     print(count, value)
...
0 a
1 b
2 c
这将允许您始终保持完美的计数。您可以从计数0开始,也可以使用+1从1开始

您想要的词典是词典中的词典。为此,创建另一个字典(调用b)并使用它在forloop中分配值。分配完所有值后,使用另一个字典(调用a)将a中的
preshift
键值设置为b,例如a[“preshift”]=b。这将使它成为你想要的方式


在这种情况下,如何使用变量
pre\u shift\u count
,我也感到困惑。解决此问题的一个简单方法是使用int类型的
b
字典。您可以在
python
中使用
defaultdict(int)
进行初始化,然后在每种情况下将值增加1,例如,
b[key]+=1

我建议您在每次迭代中打印出
I
dt
,以获得更多关于正在发生的事情的信息。Hello@code学徒是的,我会这样做,但是您能帮我如何在字典中存储数据以进行循环吗您需要确切的帮助吗?Hello@AzyCrw4282我已经尝试了
defaultdict(int)
它工作得很好,但在最终输出中,它给了我dict的数据类型和如下值
defaultdict(,{'data2':6,'data1':3})
如何删除该数据类型并仅获取数据这似乎是在打印对象,应该有与该对象相关联的方法可以提供您想要的内容。试试objname。然后选择正确的一个。我有点忙,去atm机看看。也试试这个,用dict()包起来,e。g、 ,打印(dict(object))谢谢@AzyCrw4282它工作正常。(: