Подсчет строк в элементе списка - PullRequest
1 голос
/ 16 марта 2020

Допустим, у меня есть список l, в котором в качестве элементов используются предложения. Например, l = [мальчик, мальчик, девочка, рука, ступня, нога ...]. Я хочу, чтобы я смог просмотреть список и выяснить, какие элементы в моем списке имеют дубликаты. Я попробовал функцию счетчика, но не получил желаемый результат:

from _collections import Counter

print(Counter(l))

Как я могу получить желаемый результат?

Ответы [ 3 ]

0 голосов
/ 16 марта 2020

Вы можете преобразовать этот список в словарь и снова преобразовать в список, чтобы удалить все дубликаты

mylist = ['boy' 'boy', 'girl', ,'hand' ,'foot' ]
mylist = list(dict.fromkeys(mylist))
print(mylist) 

enter image description here

0 голосов
/ 16 марта 2020

Ссылка: https://docs.python.org/3.8/library/collections.html

Класс Counter модуля collections предлагает утилиту для поиска номера появления строки в списке строк в виде словаря.

В следующей функции вы получите список строк, которые были продублированы.

from collections import Counter

def get_duplicate_str(list_of_str):
    """
    This function returns a list of duplicate strings appeared in given list of strings.
    @param list_of_str: List of strings
    @return : List of strings
    """
    str_counter_dict = Counter(list_of_str)
    list_of_duplicate_str = [key for key in str_counter_dict.keys() if str_counter_dict[key] > 1]
    return list_of_duplicate_str

# Testing the function
print(get_duplicate_str(["boy", "boy", "girl", "hand", "foot", "foot"]))

# Output
['boy', 'foot']

0 голосов
/ 16 марта 2020

Убедитесь, что длина набора слов в предложении, т. Е. Уникальные слова не совпадают с длиной списка всех слов в предложении:

sentences = ['boy boy', 'girl', 'hand foot foot']
sentences_with_duplicates = [s 
                            for s in sentences 
                            if len(set(s.split())) != len(s.split())]
print(sentences_with_duplicates)

Вывод:

['boy boy', 'hand foot foot']
...