Подсчет дубликатов целых чисел в Python - PullRequest
6 голосов
/ 05 марта 2010

Как найти общее количество дубликатов в строке? то есть, если бы это было j= [1,1,1,2,2,2], это нашло бы 4 дубликаты? Я только смог найти подсчет, который показывает, сколько раз встречался каждый отдельный номер.

Ответы [ 2 ]

17 голосов
/ 05 марта 2010
>>> j= [1,1,1,2,2,2]
>>> len(j) - len(set(j))
4

и, кстати, j - это список, а не строка, хотя для целей этого упражнения это не имеет большого значения.

8 голосов
/ 05 марта 2010

Похоже, что популярный ответ уже есть, но если вы хотите сохранить и количество отдельных дубликатов, новый объект коллекции Counter() в Python 2.7 идеально подходит для этого.

>>> from collections import Counter

>>> j = [1,1,1,2,2,2]

>>> Counter(j)
Counter({1: 3, 2: 3})

>>> sum([i - 1 for i in c.values() if i > 1])
4

>>> {k: v - 1 for k, v in c.items()} # individual dupes
{1: 2, 2: 2}

В ActiveState имеется бэкпорт для счетчика

...