counter
>>> from collections import Counter
>>> c = Counter('abcasd')
>>> c
Counter({'a': 2, 'c': 1, 'b': 1, 's': 1, 'd': 1})
常见做法:
sum(c.values()) # 继承自字典的.values()方法返回values的列表,再求和
c.clear() # 继承自字典的.clear()方法,清空counter
list(c) # 返回key组成的list
set(c) # 返回key组成的set
dict(c) # 转化成字典
c.items() # 转化成(元素,计数值)组成的列表
Counter(dict(list_of_pairs)) # 从(元素,计数值)组成的列表转化成Counter
c.most_common()[:-n-1:-1] # 最小n个计数的(元素,计数值)组成的列表
c += Counter() # 利用counter的相加来去除负值和0的值
链接https://gist.github.com/Nataila/7653082
获取list中的重复元素以及其个数:
mylist = [2,2,2,2,2,2,3,3,3,3]
mylist.sort()
myset = set(mylist)
for item in myset:
print mylist.count(item), " of ", item, " in list"
6 of 2 in list
4 of 3 in list
count = {}
for item in mylist:
count[item] = mylist.count(item)
count
Out: {2: 6, 3: 4}
链接https://blog.csdn.net/ftell/article/details/79455932
显示重复元素及其个数:
a = [1, 2, 3, 2, 1, 5, 6, 5, 5, 5]
b = set(a)
for each_b in b:
count = 0
for each_a in a:
if each_b == each_a:
count += 1
print(each_b, ": ", count)
(1, ': ', 2)
(2, ': ', 2)
(3, ': ', 1)
(5, ': ', 4)
(6, ': ', 1)
列出重复元素的索引:
a = [1, 2, 3, 2, 1, 5, 6, 5, 5, 5]
source = a
from collections import defaultdict
def list_duplicates(seq):
tally = defaultdict(list)
for i,item in enumerate(seq):
tally[item].append(i)
return ((key,locs) for key,locs in tally.items()
if len(locs)>1)
for dup in sorted(list_duplicates(source)):
print(dup)
(1, [0, 4])
(2, [1, 3])
(5, [5, 7, 8, 9])