如何解决如何获取for循环的计数并将其存储到for循环内的字典中
我试图在每个 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//,2)
(////3//,3)
(////3//,4)
(////3//,5)
我有四条记录,但它正在打印 5 我不知道如何在条件内获得完美的 for 循环计数 我想像这样将数据存储在字典中
{
"preshift":{
"zero-2":1,"two-4":0,"two-5":4,}
}
解决方法
我不知道如何在条件内获得完美的 for 循环数
为了获得 for 循环的完美计数,我建议在 enumerate()
中使用 Python
内置函数。示例:
>>> 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_shift_count
感到困惑。一个简单的方法是使用 int 类型的 b
字典。您可以在 defaultdict(int)
中使用 python
进行初始化,然后在每种情况下将值增加 1,例如 b[key]+=1
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。