gpt4 book ai didi

python - 按频率和值对列表进行排序

转载 作者:太空宇宙 更新时间:2023-11-03 13:07:21 25 4
gpt4 key购买 nike

我正在尝试解决以下问题:函数接受列表 A。结果必须是列表的有序列表。每个列表包含与原始列表A中频率相同的元素。

例子:

Input: [3, 1, 2, 2, 4]
Output: [[1, 3, 4], [2, 2]]

我设法对初始列表 A 进行排序并确定元素出现的频率。但是,我不知道如何根据频率拆分原始列表 A。

我的代码:

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]

最佳答案

您可以使用列表的 defaultdict 并迭代您的 Counter:

from collections import defaultdict, Counter

def customSort(arr):
counter = Counter(arr)
dd = defaultdict(list)
for value, count in counter.items():
dd[count].extend([value]*count)
return dd

res = customSort([3,1,2,2,4])
# defaultdict(list, {1: [3, 1, 4], 2: [2, 2]})

这提供了额外的信息,即键表示列表中的值被看到的次数。如果您需要列表的列表,您可以简单地访问值:

res = list(res.values())
# [[3, 1, 4], [2, 2]]

关于python - 按频率和值对列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54421885/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com