gpt4 book ai didi

python - 按绝对差异的频率对python列表进行排序

转载 作者:行者123 更新时间:2023-12-04 00:52:17 26 4
gpt4 key购买 nike

我有一个列表,比如,

lst=[[3,7],[4,9],[8,3],[1,5],[9,4],[4,5],[3,0],[2,7],[1,9]] 

然后想按照绝对差异的频率对这个列表进行排序,如下所示:

|3-7|=4,  |4-9|=5,    |8-3|=5,    |1-5|=4,    |9-4|=5,    |4-5|=1,    |3-0|=3,    |2-7|=5,    |1-9|=8, 

输出应该是:

[[4,9],[8,3],[9,4],[2,7],[3,7],[1,5],[4,5],[3,0],[1,9]]

我在做:

list.sort(key=self.SortByDifference,reverse=True)

def SortByDifference(self, element):
return abs(element[0]-element[1])

但是,这首先返回最高的差异。

我想按绝对差异的频率排序,而不是按最高差异排序,即 [5, 5, 4, 4, 4, 3, 2, 1] , 它会输出 [4, 4, 4, 5, 5, 3, 2, 1] 因为 4 出现的频率更高。

最佳答案

尝试创建一个名为 newl 的新列表,然后根据 absolute 差异在 中出现的次数对 lst 列表进行排序>新:

lst=[[3,7],[4,9],[8,3],[1,5],[9,4],[4,5],[3,0],[2,7],[1,9]]
newl = [abs(x - y) for x, y in lst]
print(sorted(lst, key=lambda x: -newl.count(abs(x[0] - x[1]))))

输出:

[[4, 9], [8, 3], [9, 4], [2, 7], [3, 7], [1, 5], [4, 5], [3, 0], [1, 9]]

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

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