在django python中计算dict列表中的重复项

Ahs*_*san 3 python django

如何在此列表中找到重复项的计数.

>>> 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}]
Run Code Online (Sandbox Code Playgroud)

无论如何在查询中找到?或通过其他方式?

谢谢!

Ray*_*ger 6

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

>>> 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})
Run Code Online (Sandbox Code Playgroud)

可能不言而喻,重复项是计数大于一的条目:-)

  • 我知道.我写了:-)好消息是我也写了一个backport.有关在Python 2.5或更高版本上运行的版本,请参阅http://code.activestate.com/recipes/577664-counter-class/.PS发布Python问题时,请务必提及您的2.6; 否则,受访者将假设您已获得当前版本的Python. (5认同)