ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2019-06-12 19:54:54  阅读:157  来源: 互联网

标签:python count django list django-taggit


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

现在我有一个元素列表(实际上是对象),我在下面的一个视图中从数据库中获取

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 %}

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

如果列表只包含字符串作为元素,我们可以使用类似于集合导入计数器的东西并计算计数,但在上述情况下该怎么做?

我的目的是计算出现的数量,并在模板中打印它们,如标签对象和出现,

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

编辑:

所以我得到了所需的答案
我通过将结果的元组列表转换为字典,将结果发送到模板,如下所示

{<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模板中的字典呢?

完成后我们可以更改上面的模板循环,如下所示

{% 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,count,django,list,django-taggit
来源: https://codeday.me/bug/20190612/1227976.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有