Python-循环遍历未排序的数组时计算某一项的出现次数

标签 python arrays list loops counter

我很难创建一个循环来计算数组中某个单词的出现次数,并且当循环遍历所述数组时,会使用该单词的当前出现次数创建另一个循环。我可以使用集合 counter() 获得单个单词的总出现次数,但我不一定需要知道我需要增量的总数。

我尝试使用由 counter() 制作的字典并循环遍历数组,但这会生成一个数组,该数组完成了一半的工作,但原始输出的顺序消失了。

循环

for key, value in cnt.most_common():
    x = value
    y = 0
    for index, word in enumerate(reversed(outputList)):
        if key == word:
            if x > 0:
                outputFontSizeList.append(word + str(x-y))
                if y <= x:
                    y += 1
                else:
                    y = 0

输出

[5,4,3,2,1,3,2,1,4,3,2,1,1,1] 

如果我有像

这样的列表,想要的结果如下详细所示
['cat','dog','neck','book','neck','bottle','apple','orange','cat','dog','cat','apple','neck','cat','dog']

循环后我会得到一个数组,其中的计数器与与另一个数组匹配的所述单词的当前出现次数相对应

[1,1,1,1,2,1,1,1,2,2,3,2,3,4,3] 

最佳答案

我建议您在浏览时只进行计数,而不是使用collections.Counter。使用 collections.defaultdict(int) 可能会有所帮助:

import collections
arr = ['cat','dog','neck','book','neck','bottle','apple','orange','cat','dog','cat','apple','neck','cat','dog']
c = collections.defaultdict(int)
output = []
for word in arr:
    c[word] += 1
    output.append(c[word])
print(output)

关于Python-循环遍历未排序的数组时计算某一项的出现次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49460955/

相关文章:

python - IndexError:索引1080超出了尺寸为1080的轴0的范围

python - 如何使用 easygui 将我的编码数字放到新行中?

python - 获取列表值之间的中间值列表

java - 如何检查通用列表与 jUnit 是否相等?

python:如何将列表合并到集群中?

python - 用Python查看所有系统进程

python - 带变化点的 PyMC3 回归

MySQL - 在存在 GROUP BY 的情况下删除 JSON_ARRAYAGG 中的重复结果

c - 在 C 中用 '%20' 替换空格

c++ - 当存储新元素时,二维数组会删除元素本身