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

时间:2015-01-10 12:28:40

标签: python list

我有以下清单;

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

我想要打印出现三个或更多的项目。

输出应为'li''div'

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

4 个答案:

答案 0 :(得分:1)

试试这个:

>>> 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']

答案 1 :(得分:1)

不使用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']

(仅适用于短名单,因为效率不高)。

答案 2 :(得分:0)

使用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

答案 3 :(得分:0)

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']
相关问题