关于python:唯一计数(较小列表列表)

unique count in (list of smaller lists)

本问题已经有最佳答案,请猛点这里访问。

是否有一种方法可以计算列表中的元素,最好使用集合?

1
lol = [[1,2,3],[4,2],[5,1,6]]

出:

1
2
3
4
5
6
1: 2
2: 2
3: 1
4: 1
5: 1
6: 1


1
2
3
4
5
6
7
8
9
10
11
from collections import Counter
import itertools
a= [[1,2,3],[4,2],[5,1,6]]

print Counter(itertools.chain(*a))

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

b=Counter(itertools.chain(*a))
for key,val in b.iteritems():
    print key,':',val

输出:

1
2
3
4
5
6
1 : 2
2 : 2
3 : 1
4 : 1
5 : 1
6 : 1

其他的方式(这可是做两个相对较小的高效itertools(谢谢两200ok)

1
2
3
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}


1
2
3
4
from collections import Counter
import itertools
lol = [[1,2,3],[4,2],[5,1,6]]
Counter(itertools.chain.from_iterable(lol))

输出

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