我试图解决以下问题:一个函数接受一个列表a。结果必须是一个列表的有序列表。每个列表包含在原始列表A中具有相同频率的元素
示例:
Input: [3, 1, 2, 2, 4]
Output: [[1, 3, 4], [2, 2]]
我设法对初始列表进行排序,并确定元素的频率。 但是,我不知道如何根据频率拆分原始列表。你知道吗
我的代码:
def customSort(arr):
counter = Counter(arr)
y = sorted(arr, key=lambda x: (counter[x], x))
print(y)
x = Counter(arr)
a = sorted(x.values())
print()
customSort([3,1,2,2,4])
我的电流输出:
[1, 3, 4, 2, 2]
[1, 1, 1, 2]
按您的方式对列表进行排序后:
然后可以使用^{} ,在
key
参数中使用来自Counter(x)
的结果,根据计数创建组:您可以使用
defaultdict
列表并迭代Counter
:这提供了附加信息,即键表示列表中的值被看到的次数。如果需要列表列表,只需访问以下值:
执行Scott Hunter(Python 3)建议的咕哝工作:
对于Python2.7或更低版本,使用
iteritems()
而不是items()
部分取自this answer
相关问题 更多 >
编程相关推荐