我有一个元素列表:
l = ['a', 'b', 'b', 'a', 'c', 'd', 'd', 'c']
我想生成一个元素出现的列表,所以对于每个元素,它都会计算它出现的次数,直到这一点:
这样我会得到:
elements_occurence: [1, 1, 2, 2, 1, 1, 2, 2]
我试过了:
occurrences = {}
for i in l:
if i in occurrences:
occurrences[i] += 1
else:
occurrences[i] = 1
但它给了我这样的结果:
{'a': 2, 'b': 2, 'c': 2, 'd': 2}
您当前正在检查dict的最终结果;保存"迭代时的中间值,您将得到您的结果:
occurrences = {}
elements_occurence = []
for i in l:
if i in occurrences:
occurrences[i] += 1
else:
occurrences[i] = 1
elements_occurence.append(occurrences[i])
print(elements_occurence)
print(occurrences)
提供:
[1, 1, 2, 2, 1, 1, 2, 2]
{'a': 2, 'b': 2, 'c': 2, 'd': 2}
提高计数的几种方法(按"蟒蛇">的升序(:
使用
setdefault
:for i in l: occurrences[i] = occurrences.setdefault(i, 0) + 1
使用
get
:for i in l: occurrences[i] = occurrences.get(i, 0) + 1
使用
defaultdict
:from collections import defaultdict occurrences = defaultdict(int) for i in l: occurrences[i] += 1