Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 12

Тема: Как в Python подсчитать количество вхождений в список списков?

  1. Как в Python подсчитать количество вхождений в список списков?

    Ребята, привет! У меня есть список списков, и мне нужно посчитать, сколько раз каждое значение встречается в этом списке списков. Я не уверен, как это сделать наиболее оптимально. Кто-нибудь может подсказать, как лучше всего решить эту проблему? Может быть, есть какая-то фича в Python для этого? Бонус за примеры кода! Спасибо!



  2. Ждём вас в нашем чате в Телеграмм ==>> @pythoneer_chat

    А ТАКЖЕ: Канал о Python, статьи и книги ==>>
    @pythoneer_ru

  3. В Python можно использовать библиотеку collections для решения этой задачи. В частности, класс Counter отлично подходит для подсчета количества вхождений. Вот пример кода:

    Программный код:

    from collections import Counter



    def flatten_and_count
    (nested_list):

        
    flat_list = [item for sublist in nested_list for item in sublist]

        return 
    Counter(flat_list)



    nested_list = [[123], [415], [12]]

    counts flatten_and_count(nested_list)

    print(
    counts


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

  4. Цитата Сообщение от Isolde
    В Python можно использовать библиотеку collections для решения этой задачи. В частности, класс Counter отлично подходит для подсчета количества вхождений. Вот пример кода:

    Программный код:

    from collections import Counter



    def flatten_and_count
    (nested_list):

        
    flat_list = [item for sublist in nested_list for item in sublist]

        return 
    Counter(flat_list)



    nested_list = [[123], [415], [12]]

    counts flatten_and_count(nested_list)

    print(
    counts


    Этот код сначала распаковывает вложенные списки в один плоский список, а затем использует Counter для подсчета количества каждого элемента.
    О, крутой подход с контрами! Не думал, что flatten так просто можно сделать.

  5. Или можно замутить это через itertools.chain, тоже хорошо работает:

    Программный код:

    from itertools import chain

    from collections import Counter



    nested_list 
    = [[123], [415], [12]]

    flat_list = list(chain.from_iterable(nested_list))

    counts Counter(flat_list)

    print(
    counts


    Быстрая и элегантная штучка, я так всегда делаю.

  6. Цитата Сообщение от Ольга Валентиновна
    Или можно замутить это через itertools.chain, тоже хорошо работает:

    Программный код:

    from itertools import chain

    from collections import Counter



    nested_list 
    = [[123], [415], [12]]

    flat_list = list(chain.from_iterable(nested_list))

    counts Counter(flat_list)

    print(
    counts


    Быстрая и элегантная штучка, я так всегда делаю.
    Да, itertools вообще вещь. Лаконично и стильно получилось!

  7. Или можно сделать ещё проще:

    Программный код:

    nested_list 
    = [[123], [415], [12]]

    counts = {}

    for 
    sublist in nested_list:

        for 
    item in sublist:

            if 
    item in counts:

                
    counts[item] += 1

            
    else:

                
    counts[item] = 1

    print(counts


    Это решение без использования сторонних библиотек.

  8. Цитата Сообщение от RustWanderer306
    Или можно сделать ещё проще:

    Программный код:

    nested_list 
    = [[123], [415], [12]]

    counts = {}

    for 
    sublist in nested_list:

        for 
    item in sublist:

            if 
    item in counts:

                
    counts[item] += 1

            
    else:

                
    counts[item] = 1

    print(counts


    Это решение без использования сторонних библиотек.
    Походу вариант норм, но лично я предпочитаю collections.

  9. Для тех, кто любит pandas:

    Программный код:

    import pandas 
    as pd



    nested_list 
    = [[123], [415], [12]]

    flat_list = [item for sublist in nested_list for item in sublist]

    counts pd.Series(flat_list).value_counts()

    print(
    counts


    Pandas тоже неплохо справляется с подобной задачей.

  10. Цитата Сообщение от DwarfMiner
    Для тех, кто любит pandas:

    Программный код:

    import pandas 
    as pd



    nested_list 
    = [[123], [415], [12]]

    flat_list = [item for sublist in nested_list for item in sublist]

    counts pd.Series(flat_list).value_counts()

    print(
    counts


    Pandas тоже неплохо справляется с подобной задачей.
    О, не думал о pandas для таких штук. Надо попробовать как-нибудь!

Страница 1 из 2 12 ПоследняяПоследняя