Python 对列表中的不同词典进行计数

Python 对列表中的不同词典进行计数,python,python-3.x,list,dictionary,count,Python,Python 3.x,List,Dictionary,Count,我有一个字典列表:[d1,d2,…,d3]。如何有效地(如线性时间)统计列表中的不同词典?Python可以正确地比较字典:d1==d2。字典、列表和集合是不可破坏的。假设您有一个字典列表,其中的项本身是可哈希的,那么您可以在另一个集合中使用由.items()组成的冻结集: >>> data = [{'a':1, 'b':2}, {'c':2, 'a':2}, {'b':2, 'a':1}, {'d':4}] >>> {frozenset(d.items())

我有一个字典列表:
[d1,d2,…,d3]
。如何有效地(如线性时间)统计列表中的不同词典?Python可以正确地比较字典:
d1==d2
。字典、列表和集合是不可破坏的。

假设您有一个字典列表,其中的项本身是可哈希的,那么您可以在另一个集合中使用由
.items()
组成的
冻结集

>>> data = [{'a':1, 'b':2}, {'c':2, 'a':2}, {'b':2, 'a':1}, {'d':4}]
>>> {frozenset(d.items()) for d in data}
{frozenset({('c', 2), ('a', 2)}), frozenset({('a', 1), ('b', 2)}), frozenset({('d', 4)})}
就拿它的长度来说吧

那么在上述情况下,

>>> len({frozenset(d.items()) for d in data})
3

你的字典的性质是什么<代码>str:in,
str:str
?任意对象:任意对象?它们是计数器:str:inteasy。请看我的回答:集合理解的平均时间复杂度为O(n),但在最坏的情况下,它可能会更高。我如何能有一个计数器,以便它给出原始列表中每个字典的计数?@guy12345什么?例如,d1出现2次,d2出现5次,只需执行
collections.counter(frozenset(d.items())对于数据中的d)
这是相同的想法