gpt4 book ai didi

python - 如何计算列表python,django中元素的重复

转载 作者:太空狗 更新时间:2023-10-30 02:21:03 24 4
gpt4 key购买 nike

我有一个 django 应用程序,我正在为我的博客使用 django-taggit

现在我有一个元素列表(实际上是对象),我的 View 之一是从数据库中获取的,如下所示

tags = [<Tag: some>, <Tag: here>, <Tag: tags>, <Tag: some>, <Tag: created>, <Tag: here>, <Tag: tags>]

现在如何找到列表中每个元素的计数并返回一个元组列表,如下所示

结果应该如下所示

[(<Tag: some>,2),(<Tag: here>,2),(<Tag: created>,1),(<Tag: tags>,2)]

这样我就可以通过像下面这样循环在模板中使用它们

查看

def display_list_of_tags(request):
tags = [<Tag: some>, <Tag: here>, <Tag: tags>, <Tag: some>, <Tag: created>, <Tag: here>, <Tag: tags>]
# After doing some operation on above list as indicated above
tags_with_count = [(<Tag: some>,2),(<Tag: here>,2),(<Tag: created>,1),(<Tag: tags>,2)]
return HttpResponse('some_template.html',dict(tags_with_count:tags_with_count))

模板

{% for tag_obj in tags_with_count %}
<a href="{% url 'tag_detail' tag_obj %}">{{tag_obj}}</a> <span>count:{{tags_with_count[tag_obj]}}</span>
{% endfor %}

那么如上所述如何计算列表中每个元素的出现次数?这个过程最终应该很快,因为我可能在标记应用程序中有数百个标记,对吗?

如果列表仅包含字符串作为元素,我们可以使用类似from collections import counter 的方法来计算计数,但在上述情况下该怎么做呢?

我的全部意图是计算出现次数并将它们打印在模板中,例如 tag object and occurrences,

所以我正在寻找一种快速有效的方法来执行上述功能?

编辑:

所以我从我通过将结果 list of tuples 转换为字典将结果发送到模板,如下所示

{<Tag: created>: 1, <Tag: some>: 2, <Tag: here>: 2, <Tag: tags>: 2}

并尝试以类似

的格式循环打印上面的字典
{% for tag_obj in tags_with_count %}
<a href="{% url 'tag_detail' tag_obj %}">{{tag_obj}}</a> <span>count:{{tags_with_count[tag_obj]}}</span>
{% endfor %}

但它显示以下错误

TemplateSyntaxError: Could not parse the remainder: '[tag_obj]' from 'tags_with_count[tag_obj]'

那么如何在django模板中通过类似key和value的方式显示字典呢?

完成后我们可以改变上面的模板循环如下

{% for tag_obj, count in tags_with_count.iteritems %}

最佳答案

试试 Python 的 Counter :

from collections import Counter

l = ['some', 'here', 'tags', 'some', 'created', 'here', 'tags']
print(Counter(l).items())

输出:

[('created', 1), ('some', 2), ('here', 2), ('tags', 2)]

关于python - 如何计算列表python,django中元素的重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18548710/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com