[Python] Подсчет уникальных строк

Discussion in 'Python' started by Lector, 6 Aug 2019.

  1. Lector

    Lector New Member

    Joined:
    17 Apr 2011
    Messages:
    12
    Likes Received:
    0
    Reputations:
    0
    добрый день!
    Знакомлюсь с python. Необходимо подсчитать количество уникальных строк в файле.
    Если задаю руками список, то все ок.

    from collections import Counter
    text ="""
    Илья
    Марина
    Марина
    Марина
    """
    text = text.split('\n')
    count = Counter(text)
    print (count)

    Получаю:
    Counter({'Марина': 3, '': 2, 'Илья': 1})

    Как обработать построчно большой текстовый файл и вывести счетчик уникальных значений?
    Буду признателен!
     
  2. Lector

    Lector New Member

    Joined:
    17 Apr 2011
    Messages:
    12
    Likes Received:
    0
    Reputations:
    0
    Выдает только первое значение списка...

    from collections import Counter
    import re

    list_of_lists = []
    with open(r"D:\Scripts\base.txt") as f:
    for line in f:
    inner_list = [elt.strip() for elt in line.split('\n')]
    list_of_lists.append(inner_list)

    count = Counter(inner_list)
    print (count)
     
  3. herfleisch

    herfleisch Elder - Старейшина

    Joined:
    7 Jan 2009
    Messages:
    587
    Likes Received:
    96
    Reputations:
    13
    Ты как-то немного усложнил реализацию. Все намного проще:

    Code:
    from collections import Counter
    
    counter = Counter()
    
    with open("base.txt") as file:
        for line in file:
            lineKey = line.replace('\n', '')
            counter[lineKey] += 1
    
    print(counter)
    
    Это такая, более императивная реализация того что тебе нужно. Если же хочешь пайтоновской красоты, то можно вот так:

    Code:
    from collections import Counter
    
    with open("base.txt") as file:
        counter = Counter(line[:-1] for line in file)
        print(counter)
     
    #3 herfleisch, 9 Aug 2019
    Last edited: 10 Aug 2019
    4Fun likes this.
  4. xppert

    xppert New Member

    Joined:
    13 Aug 2019
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    Для этих целей есть специальная базовая структура языка называется set:

    Code:
    >>> items = set([1, 2, 3, 1, 2, 2, 5])
    >>> print(items)
    {1, 2, 3, 5}
     
Loading...