📜  Python|按频率对给定列表进行排序并删除重复项

📅  最后修改于: 2022-05-13 01:55:12.525000             🧑  作者: Mango

Python|按频率对给定列表进行排序并删除重复项

与排序和删除重复项相关的问题在开发领域和一般编码中也很常见。已经讨论了按频率排序,但有时,我们甚至希望在不使用更多 LOC 的情况下以更短的方式删除重复项。让我们讨论一些可以做到这一点的方法。

方法 #1:使用 count() + set() + sorted()

sorted函数可用于根据需要对元素进行排序,频率可以使用 count函数计算,重复项的删除可以使用 set函数处理。

# Python3 code to demonstrate
# sorting and removal of duplicates
# Using sorted() + set() + count()
  
# initializing list
test_list = [5, 6, 2, 5, 3, 3, 6, 5, 5, 6, 5]
  
# printing original list
print("The original list : " + str(test_list))
  
# using sorted() + set() + count()
# sorting and removal of duplicates
res = sorted(set(test_list), key = lambda ele: test_list.count(ele))
  
# print result
print("The list after sorting and removal : " + str(res))
输出 :
The original list : [5, 6, 2, 5, 3, 3, 6, 5, 5, 6, 5]
The list after sorting and removal : [2, 3, 6, 5]

方法 #2:使用Counter.most_common() + 列表理解

如果有一个按频率降序排序的特定用例,还可以使用 Counter 库的最常用函数来获取频率部分。

# Python3 code to demonstrate
# sorting and removal of duplicates
# Using Counter.most_common() + list comprehension
from collections import Counter
  
# initializing list
test_list = [5, 6, 2, 5, 3, 3, 6, 5, 5, 6, 5]
  
# printing original list
print("The original list : " + str(test_list))
  
# using Counter.most_common() + list comprehension
# sorting and removal of duplicates
res = [key for key, value in Counter(test_list).most_common()]
  
# print result
print("The list after sorting and removal : " + str(res))
输出 :
The original list : [5, 6, 2, 5, 3, 3, 6, 5, 5, 6, 5]
The list after sorting and removal : [5, 6, 3, 2]