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. Для соседних задач пригодятся эти разборы:

Подписаться
Уведомить о
guest
0 комментариев
Старые
Новые Популярные

Настройки cookie

0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x