我想要一些关于如何根据元素频率对列表进行排序的帮助[重复]
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我想要一些关于如何根据元素频率对列表进行排序的帮助[重复]相关的知识,希望对你有一定的参考价值。
这个问题在这里已有答案:
我有一份清单
list1 = [4,6,2,2,2,6,4,4,4]
我想根据其元素的频率对其进行排序。
排序后列表应如下所示:
[4,4,4,4,2,2,2,6,6]
我已将元素和元素频率存储在字典中。我想对这本词典进行排序。它的价值而不是关键。这是我无法编码的部分。
我写了以下代码。我有元素的频率,但我不知道如何排序。
def checkio(data):
list1 = [4,6,2,2,2,6,4,4,4]
list2 = list(dict.fromkeys(list1))
print(list2)
d = {}
list4, result = [], []
for i in list2:
d[i] = list1.count(i)
for i in list2:
list3 = [i]*d[i]
list4.append(list3)
for sublist in list4:
for item in sublist:
result.append(item)
return(result)
答案
简短的回答是在评论中,但它有一个小的性能缺点。你也可以使用collections.Counter
:
import collections
list1 = [4,6,2,2,2,6,4,4,4]
c = collections.Counter(list1)
sorted_list1 = sorted(list1, key=lambda k: c[k], reverse=True)
这只会对所有元素进行一次计算,从而在非常大的列表中提供更好的性能
以上是关于我想要一些关于如何根据元素频率对列表进行排序的帮助[重复]的主要内容,如果未能解决你的问题,请参考以下文章