在Python中删除频率最高为K的元素

在处理列表中的数据时,我们可能会遇到这样的情况:我们根据元素的出现频率有选择地从列表中删除元素。在本文中,我们将探讨如何从频率小于等于2的列表中删除所有元素。您还可以在程序中将值2更改为任何数字。

带数

count方法将列表中每个元素的计数保留。因此,我们将其与for循环一起使用,并放置一个条件以仅保留计数大于2的元素。

示例

listA = ['Mon', 3,'Tue','Mon', 9, 3, 3]

# Printing original list
print("Original List : " + str(listA))

# Remove elements with count less than 2
res = [i for i in listA if listA.count(i) > 2]

# Result
print("List after removing element with frequency < 3 : ",res)

输出结果

运行上面的代码给我们以下结果-

Original List : ['Mon', 3, 'Tue', 'Mon', 9, 3, 3]
List after removing element with frequency < 3 : [3, 3, 3]

带柜台

Counter方法计算可迭代元素中元素的出现次数。因此,通过将所需列表传递到其中可以直接使用。

示例

from collections import Counter

listA = ['Mon', 3,'Tue','Mon', 9, 3, 3]

# printing original list
print("Original List : " + str(listA))

# Remove elements with count less than 2
res = [ele for ele in listA if Counter(listA)[ele] > 2]

# Result
print("List after removing element with frequency < 3 : ",res)

输出结果

运行上面的代码给我们以下结果-

Original List : ['Mon', 3, 'Tue', 'Mon', 9, 3, 3]
List after removing element with frequency < 3 : [3, 3, 3]