Python
Как посчитать количество уникальных элементов в списке Python
Если список состоит из простых значений — чисел, строк или кортежей — количество уникальных элементов проще всего посчитать через set. Множество хранит каждое значение только один раз, поэтому остается взять его длину через len()
items = ["python", "sql", "python", "java", "sql"]
unique_count = len(set(items))
print(unique_count)
Результат
3
В списке три уникальных значения: python, sql и java
Короткий ответ
numbers = [1, 2, 2, 3, 3, 3]
count = len(set(numbers))
print(count)
Результат
3
set(numbers) превратит список [1, 2, 2, 3, 3, 3] в множество {1, 2, 3}, а len() посчитает количество элементов в этом множестве
Как увидеть сами уникальные элементы
Иногда полезно не только посчитать, но и вывести уникальные значения
items = ["python", "sql", "python", "java", "sql"]
unique_items = set(items)
print(unique_items)
print(len(unique_items))
Порядок в множестве может отличаться от исходного списка. Если порядок важен, используйте dict.fromkeys()
items = ["python", "sql", "python", "java", "sql"]
unique_items = list(dict.fromkeys(items))
print(unique_items)
print(len(unique_items))
Результат
['python', 'sql', 'java']
3
Как посчитать уникальные элементы без учета регистра
Если Python и python нужно считать одним значением, приведите строки к одному регистру
items = ["Python", "python", "SQL", "sql", "Java"]
unique_count = len(set(item.lower() for item in items))
print(unique_count)
Результат
3
Генератор item.lower() for item in items не меняет исходный список, а только создает значения для подсчета
Как посчитать уникальные элементы через цикл
Цикл полезен, когда нужно добавить логику обработки
items = ["Python", "python", "SQL", "sql", "Java"]
seen = set()
for item in items:
seen.add(item.lower())
print(len(seen))
Этот код делает то же самое, но шаги видно явно: создаем пустое множество, добавляем обработанные элементы, считаем длину
Как узнать, сколько раз встречается каждый элемент
Если нужна не только численность уникальных элементов, но и частота, используйте Counter
from collections import Counter
items = ["python", "sql", "python", "java", "sql", "python"]
counts = Counter(items)
print(counts)
print("Уникальных:", len(counts))
Результат
Counter({'python': 3, 'sql': 2, 'java': 1})
Уникальных: 3
Counter ведет себя как словарь, где ключ — элемент, а значение — количество повторений
Как посчитать уникальные элементы в списке словарей
Словари нельзя напрямую положить в set, потому что они изменяемые. Нужно выбрать поле, по которому вы считаете объект уникальным
users = [
{"id": 1, "name": "Аня"},
{"id": 2, "name": "Игорь"},
{"id": 1, "name": "Аня"},
]
unique_ids = set(user["id"] for user in users)
print(len(unique_ids))
Результат
2
Если уникальность определяется email, артикулом или ссылкой, используйте это поле вместо id
Как посчитать уникальные пары значений
Иногда уникальность определяется не одним полем, а парой. Например, город и товар
orders = [
{"city": "Казань", "product": "Книга"},
{"city": "Казань", "product": "Книга"},
{"city": "Москва", "product": "Книга"},
]
unique_pairs = set((order["city"], order["product"]) for order in orders)
print(len(unique_pairs))
Результат
2
Кортеж можно положить в set, если внутри него лежат неизменяемые значения
Как посчитать уникальные элементы после split
Если пользователь вводит слова через пробел, можно сделать так
text = input("Введите слова через пробел: ")
words = text.split()
print("Уникальных слов:", len(set(words)))
Если нужно игнорировать регистр
text = input("Введите слова через пробел: ")
words = text.split()
unique_count = len(set(word.lower() for word in words))
print("Уникальных слов:", unique_count)
Мини-практика
Создайте файл unique_count.py
visits = ["/", "/python", "/", "/sql", "/python", "/about"]
unique_pages = set(visits)
print("Всего визитов:", len(visits))
print("Уникальных страниц:", len(unique_pages))
print("Страницы:", unique_pages)
Потом замените set(visits) на dict.fromkeys(visits) и посмотрите, как меняется порядок вывода
Частые ошибки
Первая ошибка — считать длину исходного списка, а не множества. len(items) покажет общее количество элементов, включая повторы
Вторая ошибка — использовать set() для словарей. Для сложных объектов нужно выбрать поле или пару полей, по которым определяется уникальность
Третья ошибка — забыть про регистр. Для человека Python и python могут быть одним словом, а для Python это разные строки
Что почитать дальше по Python
Если нужен общий маршрут по теме, откройте рубрику Python. Для соседних задач пригодятся эти разборы:
- Как удалить повторяющиеся элементы из списка Python: set, dict.fromkeys и порядок
- Как заменить элемент в списке Python: по индексу, по значению и в цикле
- Как из списка сделать строку в Python: join, map и частые ошибки
- Как сложить числа в списке Python: sum, цикл и проверка типов