Найти наиболее вероятный элемент в списке - PullRequest
0 голосов
/ 26 марта 2020

Итак, у меня есть список возможных значений. Некоторые из них верны, а некоторые нет. Но они относительно близко друг к другу.

['POYS499', 'PDY9499', 'POY9499', 'PDYS499', 'PDYS499', 'PDY949']

Правильное значение должно быть PDY9499. Есть ли способ сделать это. Алгоритм, который уже был создан для этого.

Я знаю, как это сделать вручную. Я сопоставлю каждый символ и получу частоту, а затем создам список от наивысшего к низшему соответствию. Конечно, вы должны убедиться, что максимальное количество символов остается прежним.

Есть ли более простой способ?

- правка Возможно, я не правильно объясняю это. Я хочу "функцию", которая возвращает список с самыми высокими повторяющимися символами в элементе списка элементов.

Таким образом, он проверяет первый символ. Если у него 5 p, то P - первый символ. Затем он проверяет второй символ. 3 D и 2 O. Итак, мы дошли до

['PD', 'PO']

Затем проверяется третий символ. и др c.

1 Ответ

0 голосов
/ 26 марта 2020

А как насчет использования счетчика из модуля коллекций? Ниже приведен пример:

from collections import Counter
Counter(['POYS499', 'PDY9499', 'POY9499', 'PDYS499', 'PDYS499', 'PDY949'])

Вывод:

Counter({'POYS499': 1, 'PDY9499': 1, 'POY9499': 1, 'PDYS499': 2, 'PDY949': 1})

Редактировать: Дополнительное решение, которое сортирует ваш список:

from collections import Counter
counter_output = Counter(['POYS499', 'PDY9499', 'POY9499', 'PDYS499', 'PDYS499', 'PDY949'])
sorted(counter_output.items(), key =lambda x: x[1], reverse = True)

Выход:

[('PDYS499', 2), ('POYS499', 1), ('PDY9499', 1), ('POY9499', 1), ('PDY949', 1)]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...