【发布时间】:2021-08-09 01:48:14
【问题描述】:
假设我在这里有一个列表:
list = ['cat', 'dog', 'wolf', 'cat', 'wolf', 'cat', 'sheep', 'sheep']
我只想获取那些共同频率大于 1 的单词。
结果列表应该是:
['cat', 'wolf', 'sheep']
谁能帮我解决这个问题?
【问题讨论】:
-
'wolf'的频率不大于 2
假设我在这里有一个列表:
list = ['cat', 'dog', 'wolf', 'cat', 'wolf', 'cat', 'sheep', 'sheep']
我只想获取那些共同频率大于 1 的单词。
结果列表应该是:
['cat', 'wolf', 'sheep']
谁能帮我解决这个问题?
【问题讨论】:
'wolf' 的频率不大于 2
您可以使用collections.Counter 计算重复次数,然后使用列表推导式仅保留次数大于 1 的次数。
>>> from collections import Counter
>>> words = ['cat', 'dog', 'wolf', 'cat', 'wolf', 'cat', 'sheep', 'sheep']
>>> c = Counter(words)
>>> [k for k, v in c.items() if v > 1]
['cat', 'wolf', 'sheep']
【讨论】:
list = ['cat', 'dog', 'wolf', 'cat', 'wolf', 'cat']
items_map = {}
for item in list:
if item not in items_map.keys():
items_map[item] = 1
else:
items_map[item] += 1
result = []
for key in items_map.keys():
if items_map[key] > 1:
result.append(key)
print(result)
【讨论】: