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}) |