Перейти к содержимому

Как найти количество одинаковых элементов в списке python

  • автор:

Количество повторяющихся элементов в списке

Есть массив, в котором куча повторяющихся элементов. Мне надо вывести содержимое конкретного элемента этого массива и сколько таких же элементов в нём (вывести цифру).
Пример массива:

array = ["Bob", "Alex", "Bob", "John"] 

(типа 2 Боба и т.д.)
Отслеживать
306 1 1 серебряный знак 11 11 бронзовых знаков
задан 24 апр 2015 в 16:00
105 1 1 золотой знак 2 2 серебряных знака 6 6 бронзовых знаков

6 ответов 6

Сортировка: Сброс на вариант по умолчанию

Самый простой способ подсчитать количество вхождений всех элементов — воспользоваться встроенным классом Counter из модуля collections :

In [4]: from collections import Counter In [5]: array = ["Bob", "Alex", "Bob", "John"] In [6]: c = Counter(array) In [7]: c Out[7]: Counter() In [8]: c['Bob'] Out[8]: 2 In [9]: c['Unknown'] Out[9]: 0 

Отслеживать
ответ дан 24 апр 2015 в 17:16
4,179 1 1 золотой знак 27 27 серебряных знаков 41 41 бронзовый знак
Как получить 0 элемент в Counter(<'Bob': 2, 'Alex': 1, 'John': 1>)? c[0] возвращает в итоге 0
3 июл 2021 в 3:41

Из документации: As a dict subclass, Counter Inherited the capability to remember insertion order. . Это значит, что next(iter(Counter(<'Bob': 2, 'Alex': 1, 'John': 1>).values())) вернет 2 (начиная с версии 3.7). Однако .values возвращает view , который не поддерживает random access по индексу, это значит вам придется итерироваться до N элемента чтобы получить его значение. Поэтому на практике будет правильнее держать соответствие keys: index -> key и доставать как c[keys[0]] .

Как можно посчитать количество одинаковых элементов в списке Python

Продолжаем разговаривать про списки в Python и про то как с ними работать, я сторонник того что информация в небольших объемах воспринимается и усваивается намного лучше, поэтому и пишу небольшие статьи их можно даже назвать заметками. Сегодня поговорим о том как можно посчитать количество одинаковых элементов в списке. Делается это достаточно просто, в принципе как и все в языке программирования Python) Для решения этой задачи потребуется метод count(). Рассмотрим его применение на самом простом примере.

Поиск и подсчет количества одинаковых элементов в списке

И так допустим у нас есть какой-то список, и нам бы очень хотелось не только найти одинаковые элементы но и посчитать их количество.

numbers = [1, 2, 5, 55, 68, 88, 89,1, 2, 5, 55, 68, 88, 891, 2, 5, 55, 68, 88, 89,]
print(numbers)

Список состоит из цифр и выглядит следующим образом.

Как можно посчитать количество одинаковых элементов в списке Python

Для того чтобы посчитать количество одинаковых элементов нужно дописать всего одну строчку. Создать переменную в которую с помощью метода count будет помещаться количество найденных одинаковых элементов, для того чтобы увидеть результат выведем его на экран.

numbers = [1, 2, 5, 55, 68, 88, 89,1, 2, 5, 55, 68, 88, 891, 2, 5, 55, 68, 88, 89,] print(numbers) conunt = numbers.count(int('2')) print(conunt) 

Проверим результат, как видим все правильно цифра «2» встречается в нашем списке «3» раза.

Поиск и подсчет количества одинаковых элементов в списке

У список достаточно много методов и с каждым из них нужно уметь работать, ну или хотя бы знать что он есть, чтобы в случае необходимость быстренько его найти и посмотреть как им пользоваться.

Количество элементов в списке Python с условиями или критериями

В этом посте мы рассмотрим, как узнать число элементов в списке Python, удовлетворяющих определенным условиям или критериям.

Если вам просто нужно найти количество конкретных элементов с списке, используйте метод .count()

 
 
>>> list_numbers = [1, 2, 2, 5, 5, 7, 4, 2, 1] >>> print(list_numbers.count(2)) 3

Существует несколько способов такого подсчета, и мы изучим каждый из них с помощью примеров. Итак, давайте начнем.

1. Использование цикла for для подсчета в списке Python

В этом фрагменте кода мы используем цикл for для подсчета элементов списка Python, удовлетворяющих условиям или критериям. Мы перебираем каждый элемент списка и проверяем условие, если оно истинно, то мы увеличиваем счетчик на 1. Это простой процесс сопоставления и подсчета для получения интересующего нас количества.

 
 
list_numbers = [78, 99, 66, 44, 50, 30, 45, 15, 25, 20] count = 0 for item in list_numbers: if item%5 == 0: count += 1 print("количество элементов списка, удовлетворяющих заданному условию:", count)
количество элементов списка, удовлетворяющих заданному условию: 6 

2. Применение len() со списковыми включениями для подсчета в списке Python

В представленном ниже фрагменте кода, мы используем списковые включения (list comprehension), чтобы создать новый список, элементы которого соответствует заданному условию, после чего мы получаем длину собранного списка. Это намного легче понять на примере, поэтому давайте перейдем к нему.

 
 
list_numbers = [78, 99, 66, 44, 50, 30, 45, 15, 25, 20] element_count = len([item for item in list_numbers if item%5 == 0]) print( "количество элементов списка, удовлетворяющих заданному условию:", element_count )
количество элементов списка, удовлетворяющих заданному условию: 6 

Подсчет ненулевых элементов

В этом примере мы находим общее количество ненулевых элементов. Чтобы узнать число нулевых членов списка, мы можем просто изменить условие на if item == 0 .

 
 
list_numbers = [78, 99, 66, 44, 50, 30, 45, 0, 0, 0] element_count = len([item for item in list_numbers if item != 0]) print( "количество элементов списка, удовлетворяющих заданному условию:", element_count )
количество элементов списка, удовлетворяющих заданному условию: 7 

3. sum() и выражение-генератор для подсчета в списке Python

В этом примере кода мы используем sum() с генераторным выражением. Каждый элемент списка проходит проверку условием и для тех элементов, которые ему удовлетворяют, возвращается значение True . Метод sum() в свою очередь подсчитывает общее число истинных значений.

 
 
list_numbers = [78, 99, 66, 44, 50, 30, 45, 15, 25, 20] count = 0 count = sum(True for i in list_numbers if i % 5 == 0) print( "количество элементов списка, удовлетворяющих заданному условию:", count )
количество элементов списка, удовлетворяющих заданному условию: 6 

4. sum() и map() для подсчета элементов списка Python с условиями или критериями

Функция map(fun, iterable) принимает два аргумента: итерируемый объект (это может быть строка, кортеж, список или словарь) и функцию, которая применяется к каждому его элементу, — и возвращает map-объект (итератор). Для применения одной функции внутри другой идеально подходит лямбда-функция. Таким образом, map() примет первый аргумент в виде лямбда-функции.

Здесь sum() используется с функцией map() , чтобы получить количество всех элементов списка, которые делятся на 5.

Давайте разберемся на примере, в котором переданная лямбда-функция предназначена для фильтрации членов списка, не кратных 5.

 
 
list_numbers = [78, 99, 66, 44, 50, 30, 45, 15, 25, 20] count = 0 count = sum(map(lambda item: item % 5 == 0, list_numbers)) print( "количество элементов списка, удовлетворяющих заданному условию:", count )
количество элементов списка, удовлетворяющих заданному условию: 6 

5. reduce() с лямбда-функцией для подсчета элементов списка Python с условием или критериями

Lambda — это анонимная (без имени) функция, которая может принимать много параметров, но тело функции должно содержать только одно выражение. Лямбда-функции чаще всего применяют для передачи в качестве аргументов в другие функции или для написания более лаконичного кода. В этом примере мы собираемся использовать функции sum() , map() и reduce() для подсчета элементов в списке, которые делятся на 5.

Приведенный ниже код наглядно демонстрирует это.

 
 
from functools import reduce list_numbers = [78, 99, 66, 44, 50, 30, 45, 15, 25, 20] result_count = reduce( lambda count, item: count + (item % 5 == 0), list_numbers, 0 ) print( "количество элементов списка, удовлетворяющих заданному условию:", result_count )
количество элементов списка, удовлетворяющих заданному условию: 6

Надеюсь, что вы узнали о различных подходах к подсчету элементов в списке Python с помощью условия или критериев для фильтрации данных.

Как вывести количество повторений значений словаря в списке с вложенными словарями?

Я читала про модуль collections.Counter, но не могу понять как его применить конкретно к списку со вложенными словарями. Вложенные структуры - новая тема для меня.

  • Вопрос задан более трёх лет назад
  • 1813 просмотров

Комментировать

Решения вопроса 2

kshnkvn

yay ✌️ t.me/kshnkvn

students = [ , , , , , ] names = dict() for student in students: if student['first_name'] not in names.keys(): names[student['first_name']] = 1 else: names[student['first_name']] += 1 for name, count in names.items(): print(f': ')
names = [s['first_name'] for s in students] for name in set(names): print(f': ')

Ответ написан более трёх лет назад

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *