开发手册 欢迎您!
软件开发者资料库

Python 列表(List)中相同值的元素计数(defaultdict和Counter)

本文主要分享一下Python中列表(list)中相同元素计数输出的代码。

示例数组

temp = ['A', 'B', 'A', 'B', 'A', 'B']

计数输出数组

['A_1', 'B_1', 'A_2', 'B_2', 'A_3', 'B_3']

通过defaultdict计数

defaultdict()dict()的基础上添加了一个missing(key)的方法,在调用一个不存在的key的时候,defaultdict函数会调用“missing”,返回一个int,set,list,dict对应的默认数值,不会出现keyerror的情况。

from collections import defaultdictL = ['A', 'B', 'A', 'B', 'A', 'B']dd = defaultdict(int)res = []for item in L:    dd[item] += 1    res.append(f'{item}_{dd[item]}')print(res)['A_1', 'B_1', 'A_2', 'B_2', 'A_3', 'B_3']

通过Counter计数

Counter(计数器)是对字典的补充,用于追踪值的出现次数。
Counter是一个继承了字典的类(Counter(dict))

>>> from collections import Counter>>> >>> temp = ['A', 'B', 'A', 'B', 'A', 'B']>>> seen = Counter()>>> >>> result = []>>> for c in temp:...:    seen.update(c)...:    result.append('{}_{}'.format(c, seen[c]))...:    >>> result>>> ['A_1', 'B_1', 'A_2', 'B_2', 'A_3', 'B_3']