Python 中的唯一计数(较小列表的列表)

Python 中的唯一计数(较小列表的列表),python,list,Python,List,是否有一种pythonic方法来计算列表中的元素(最好使用集合) lol = [[1,2,3],[4,2],[5,1,6]] 输出: 输出: 1 : 2 2 : 2 3 : 1 4 : 1 5 : 1 6 : 1 与itertools相比,使用其他方法但效率较低(多亏了200OK) 输出 Counter({1: 2, 2: 2, 3: 1, 4: 1, 5: 1, 6: 1}) 您尝试过的任何东西想要与我们分享吗?最好使用集合。想必你已经找到了?您在使用时遇到了什么问题?sum(map(C

是否有一种pythonic方法来计算列表中的元素(最好使用集合)

lol = [[1,2,3],[4,2],[5,1,6]]
输出:

输出:

1 : 2
2 : 2
3 : 1
4 : 1
5 : 1
6 : 1
与itertools相比,使用其他方法但效率较低(多亏了200OK)

输出

Counter({1: 2, 2: 2, 3: 1, 4: 1, 5: 1, 6: 1})

您尝试过的任何东西想要与我们分享吗?最好使用集合。想必你已经找到了?您在使用时遇到了什么问题?
sum(map(Counter,lol),Counter())
,与itertools版本相比,它虽然短但速度较慢。@sundarnatarajサンダーナタラジ 当然可以,但也要指出,与itertools版本相比,这是效率较低的。@200好的,我认为有一种情况需要说明,这不是该问题的重复。这个问题对这个问题有一个答案,但这并不一定是这个问题的重复。不过,我肯定以前有人问过这个问题。您不需要
列表(…)
isinstance(Counter(),dict)
@200OK上面的评论是什么。“我不明白。”桑达尔纳塔拉吉说サンダーナタラジ <代码>计数器是dict的子类,因此代替了dict(计数器(itertools.chain(*a))。。。在b中您只需在计数器(itertools.chain(*a))中对键、值进行
即可
而无需创建另一个
dict
@200OK谢谢更新
1 : 2
2 : 2
3 : 1
4 : 1
5 : 1
6 : 1
a= [[1,2,3],[4,2],[5,1,6]]
sum(map(Counter, a), Counter())
#output {1: 2, 2: 2, 3: 1, 4: 1, 5: 1, 6: 1}
from collections import Counter
import itertools
lol = [[1,2,3],[4,2],[5,1,6]]
Counter(itertools.chain.from_iterable(lol))
Counter({1: 2, 2: 2, 3: 1, 4: 1, 5: 1, 6: 1})