Случай использования для uniq, groupby без сортировки - PullRequest
2 голосов
/ 08 июня 2019

При отладке программы на Python я недавно обнаружил, что функция Python itertools # groupby () требует сортировки входной коллекции, поскольку она группирует только идентичные элементы, встречающиеся в последовательности:

Как правило, итерируемое уже должно быть отсортировано по той же ключевой функции.

Операция groupby () аналогична фильтру uniq в Unix

В обоих случаях, uniq и Python groupby(), мне интересно, какой вариант использования может быть для их применения без сортировки.

Ясно, что сортировка может быть дорогой, и ее следует по возможности избегать. Однако, если на практике сортировка, по-видимому, неизбежна, то почему разработчики Python решили не устанавливать ее по умолчанию в groupby()? Это, кажется, вызывает много путаницы среди пользователей функции.

Я отметил, что это дизайнерское решение не кажется универсальным. Такие языки, как Scala, по-видимому, неявно сортируют коллекции в своих groupBy() функциях.

Следовательно, у меня вопрос: каковы варианты использования, которые привели к принятию решения о неявной сортировке в uniq и Python groupby ()?

...