我有以下清单;
['html', 'header', 'title', 'body', 'div', 'div', 'div', 'div', 'div', 'ul', 'li', 'li', 'li']
我想要打印出现三个或更多的项目。
输出应为'li'
和'div'
任何人都可以帮我python代码来做到这一点。
答案 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
答案 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']