Сортировка списка python по частоте их абсолютной разницы

#python #python-3.x #list #sorting #frequency

#питон #python-3.x #Список #сортировка #частота

Вопрос:

У меня есть такой список, как,

 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 что появляется чаще.

Комментарии:

1. Удаление reverse=True могло бы помочь.

2. @wuerfelfreak Нет, он не хочет сортировать по номеру, он хочет сортировать по частоте номера.

3. Да, вы правы. Перечитайте это. Спасибо

Ответ №1:

Попробуйте создать новый вызываемый список newl , затем отсортируйте lst список по тому, сколько раз разница abs olute появляется в newl :

 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]]
 

Комментарии:

1. @Mohiuddin Нет проблем, пожалуйста, примите и проголосуйте, если это сработает 🙂

2. Не могли бы вы объяснить инструкцию print, чтобы я мог расширить свой код? Я пытаюсь разделить список на вложенный список на основе одних и тех же значений (абсолютная разница)

3. @Mohiuddin Хорошо, итак, внутри инструкции print я выполняю sorted функцию, которая сортирует lst список, и у меня есть key аргумент. Что ему объявляется, так это то, как он будет сортировать список, он сортирует по тому, во сколько раз больше абсолютной разницы двух чисел в списке newl .