Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.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 queryset_Python_Django - Fatal编程技术网

Python 通过对';值列表';在Django queryset

Python 通过对';值列表';在Django queryset,python,django,Python,Django,通过Django queryset调用,我将生成一个整数元组列表: [(0,1),(0,2),(0,4),(5,8),.......] 相反,我需要生成一个列表,将元组中的两个元素相加,即 [1,2,4,13,.....] 如何在Django queryset查询中实现这一点 到目前为止,我写的查询是: photos_score_list = Photo.objects.filter(upload_time__gte=yesterday).annotate(unique_comments=C

通过Django queryset调用,我将生成一个整数元组列表:

[(0,1),(0,2),(0,4),(5,8),.......]
相反,我需要生成一个列表,将元组中的两个元素相加,即

[1,2,4,13,.....]
如何在Django queryset查询中实现这一点

到目前为止,我写的查询是:

photos_score_list = Photo.objects.filter(upload_time__gte=yesterday).annotate(unique_comments=Count('photocomment__submitted_by', distinct=True)).values_list('vote_score','unique_comments')

我不知道Django,但当你有这个:

l = [(0,1),(0,2),(0,4),(5,8)]
您可以使用列表理解计算一行中每个元素的总和:

l2 = [sum(x) for x in l]
结果:

[1, 2, 4, 13]
适用于您的问题:

photos_score_sum = [sum(x) for x in Photo.objects.filter(upload_time__gte=yesterday).annotate(unique_comments=Count('photocomment__submitted_by', distinct=True)).values_list('vote_score','unique_comments')]

我不知道Django,但当你有这个:

l = [(0,1),(0,2),(0,4),(5,8)]
您可以使用列表理解计算一行中每个元素的总和:

l2 = [sum(x) for x in l]
结果:

[1, 2, 4, 13]
适用于您的问题:

photos_score_sum = [sum(x) for x in Photo.objects.filter(upload_time__gte=yesterday).annotate(unique_comments=Count('photocomment__submitted_by', distinct=True)).values_list('vote_score','unique_comments')]

一旦有了元组列表,就可以使用列表理解生成第二个列表,如下所示:

>>> tuples_list = [(0,1),(0,2),(0,4),(5,8)]
>>> res_list = [i+j for i,j in tuples_list]
>>> res_list
[1, 2, 4, 13]

在列表理解中,我们在
tuples\u list
中返回tuple
(i,j)
,求和
i+j
,结果在
res\u list

中排序,一旦您有了该元组列表,您可以使用列表理解生成第二个列表,如下所示:

>>> tuples_list = [(0,1),(0,2),(0,4),(5,8)]
>>> res_list = [i+j for i,j in tuples_list]
>>> res_list
[1, 2, 4, 13]

在我们的列表理解中,我们在
tuples\u列表中返回tuple
(i,j)
,求和
i+j
,结果在
res\u列表中排序

有趣的是,稍等,我会尝试一下。如果这个优雅的解决方案不适用于Django queryset查询,可能是
functools.reduce
操作符。add
有帮助吗?这里有一个不同的问题(IN/or):如果它类似于Django中的querydict,那么您可能必须首先对它调用
list()
。不确定您是否需要它,但您也可以使用,因为Python 3中的
map
返回迭代器。因此
map(sum,l)
。当您使用
map
时,必须将其转换为list,这样listcomps在python3中肯定占上风。我已经停止使用
map
filter
有趣的是,请稍等,我会试一试。如果这个优雅的解决方案不适用于Django queryset查询,可能是
functools。reduce
操作符。add
会有帮助吗?这里有一个不同的问题(IN/or):如果它类似于Django中的querydict,那么您可能必须首先对它调用
list()
。不确定您是否需要它,但您也可以使用,因为Python 3中的
map
返回迭代器。因此
map(sum,l)
。当您使用
map
时,必须将其转换为list,这样listcomps在python3中肯定占上风。我已停止使用
map
&
filter