在 python 如何计算列表中元素的出现次数

In python how to count occurance of elements in list

我有以下列表;

['html', 'header', 'title', 'body', 'div', 'div', 'div', 'div', 'div', 'ul', 'li', 'li', 'li']

我想打印出现 3 次或更多次的项目。

输出应该是'li''div'

任何人都可以帮我 python 代码来做到这一点。

使用collections模块。

Counter 方法将添加列表 l 中的所有项目作为键,值是它们的计数。 所以你可以根据你的逻辑根据它们的计数找到键。

代码:

from collections import Counter

l = ['html', 'header', 'title', 'body', 'div', 'div', 'div', 'div', 'div', 'ul', 'li', 'li', 'li']

c = Counter(l)
for key, count in c.items():
    print("[{}] - {}".format(key, count))

输出:

[body] - 1
[ul] - 1
[title] - 1
[li] - 3
[header] - 1
[html] - 1
[div] - 5

此模块的文档https://docs.python.org/2/library/collections.html

试试这个:

>>> from collections import Counter

>>> l = ['html', 'header', 'title', 'body', 'div', 'div', 'div', 'div', 'div', 'ul', 'li', 'li', 'li']
>>> [item for item, cnt in Counter(l).items() if cnt > 2]
['li', 'div']

不使用 Counter,

In [198]: e = ['html', 'header', 'title', 'body', 'div', 'div', 'div', 'div', 'div', 'ul', 'li', 'li', 'li']
In [199]: list(set([v for v in e if e.count(v)>=3]))
Out[199]: ['li', 'div']

(仅适用于短列表,因为它不太有效)。

L = ['html', 'header', 'title', 'body', 'div', 'div', 'div', 'div', 'div', 'ul', 'li', 'li', 'li']

result = []

for i in range(len(L)):

    if L.count(L[i]) >= 3 and L[i] not in result:
        result.append(L[i])

print result

输出

['div', 'li']