Вы хотите эффективный метод. Очевидно, что это возможно за время O (n), поэтому любой метод, требующий сортировки списка, будет отсутствовать, поскольку это будет O (n log (n)). Невозможно сделать это быстрее, чем O (n), потому что даже если вы проверите первые элементы n / 2-1, и все они являются «яблочными», вы не знаете, что остальные элементы не будут бананами .
Итак, учитывая, что мы ищем O (n), вы должны выполнить итерацию по списку и вести подсчет количества предметов каждого типа, которые вы видели.
Дефолт по умолчанию был бы простым способом реализовать это на практике.
>>> from collections import defaultdict
>>> d = defaultdict(int)
>>> for i in ['apple', 'banana', 'apple']:
... d[i] += 1
...
>>> d
defaultdict(<type 'int'>, {'apple': 2, 'banana': 1})