按绝对差异的频率对 python 列表进行排序
Sorting a python list by frequency of their absolute difference
我有一个列表,
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])
但是,这个return最高差在前。
我想按绝对差异的频率排序,所以不是按最高差异排序,即[5, 5, 4, 4, 4, 3, 2, 1]
,它会输出[4, 4, 4, 5, 5, 3, 2, 1]
,因为4
出现得更多经常。
尝试创建一个名为 newl
的新列表,然后根据 newl
中 abs
差异出现的次数对 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]]
我有一个列表,
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])
但是,这个return最高差在前。
我想按绝对差异的频率排序,所以不是按最高差异排序,即[5, 5, 4, 4, 4, 3, 2, 1]
,它会输出[4, 4, 4, 5, 5, 3, 2, 1]
,因为4
出现得更多经常。
尝试创建一个名为 newl
的新列表,然后根据 newl
中 abs
差异出现的次数对 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]]