计算Django-python中dict列表中的重复项

2024-10-01 13:36:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我怎样才能找到这个列表中的重复数。在

>>> result = SiteTags.objects.values('content_type','object_id')
>>> result
[{'object_id': 1, 'content_type': 46}, {'object_id': 1, 'content_type': 46}, {'object_id': 2, 'content_type': 42}]

在查询中是否有要查找的内容?或者通过其他方式?在

谢谢!在


Tags: id内容列表objectsobjecttype方式result
2条回答

如果我正确地理解了您的请求,collections.Counter将是计算重复次数的一个有用方法。它只适用于散列输入,因此列表中的字典需要转换为排序项的元组:

>>> from collections import Counter
>>> Counter([tuple(sorted(d.items())) for d in result])
Counter({(('content_type', 46), ('object_id', 1)): 2, (('content_type', 42), ('object_id', 2)): 1})

不用说,重复项是计数大于1的条目:-)

set(tuple(sorted(r.iteritems())) for r in result)

提供此列表中的一组唯一元素。取其长度并将其与len(result)进行比较。在

要获取结果中的每个元素及其计数:

^{pr2}$

印刷品:

{'object_id': 2, 'content_type': 42} 1
{'object_id': 1, 'content_type': 46} 2

相关问题 更多 >