我有一个列表的列表,看起来像这样
listOfLists = [
['a','b','c','d'],
['a','b'],
['a','c'],
['c','c','c','c']
]
我希望能够统计包含特定元素的列表数量。例如,我的输出应该是:
{'a':3,'b':2,'c':3,'d':1}
从上面可以看出,我不需要元素的总数。对于"c"
,尽管它的总数是5,但输出结果是3,因为它只在3个列表中出现。
我正在使用一个计数器来获取计数。下面可以看到相同的内容。
line_count_tags = []
for lists in lists_of_lists:
s = set()
for element in lists:
s.add(t)
lines_count_tags.append(list(s))
count = Counter([count for counts in lines_count_tags for count in counts])
所以,当我打印计数时,我得到
{'a':3,'c':3,'b':2,'d':1}
我想知道是否有更好的方法来实现我的目标。
itertools.chain
可以获得更快的执行速度(约40%!)。然而,Counter
+itertools.chain
的执行速度比我提出的“原始”方法慢4倍。 - zweritertools
实际上胜过几乎任何东西 - 它们通常是较慢但易于阅读的选择:D - zwer