Как узнать, сколько одинаковых элементов в списке?
Подскажите пожалуйста как узнать сколько в списке элементов с определенным именем, например Иван. Или сколько людей с одинаковой фамилией.
l=['Круглов Алексей', 'Ворожейкин Борис', 'Митин Сергей', 'Алешин Сергей']
name=l.count('Сергей')
Этот метод не срабатывает для части слова,нашел вот такое решение:
print(sum(map(lambda x:1 if 'Сергей' in x else 0, l)))
Но это пока не мой уровень)), нужно что то простое, без циклов. Спасибо.
Ответы (3 шт):
Автор решения: Zhenia Kviatkivskyi
→ Ссылка
Предлагаю фамилии записать в отдельный список)))
from collections import Counter
my_list = ['анна', 'петя', 'анна', 'петя', 'сережа', 'алена']
result= Counter(my_list)
print('**',result)
# ** Counter({'анна': 2, 'петя': 2, 'сережа': 1, 'алена': 1})
Автор решения: Miks Blake
→ Ссылка
Судя по тому, что циклы вы ещё не проходили, то предложу "глупый" вариант:
name_list = ['Круглов Алексей', 'Ворожейкин Борис', 'Митин Сергей', 'Алешин Сергей']
if 'Сергей' in name_list[0]:
print(name_list[0])
if 'Сергей' in name_list[1]:
print(name_list[1])
if 'Сергей' in name_list[2]:
print(name_list[2])
if 'Сергей' in name_list[3]:
print(name_list[3])
Но я бы всё же вам рекомендовал что-то типо такого:
name_list = ['Круглов Алексей', 'Ворожейкин Борис', 'Митин Сергей', 'Алешин Сергей']
for name in name_list:
if 'Сергей' in name:
print(name)
Автор решения: Dmitry
→ Ссылка
List comprehension решает в одну строку
l=['Круглов Алексей', 'Ворожейкин Борис', 'Митин Сергей', 'Алешин Сергей']
result = len([i for i in l if "Сергей" in i])
Результат будет длина списка, в каждом члене которого есть Сергей
То же самое, но на "понятном" языке
>>> counter = 0
>>> for item in l:
... if "Сергей" in item:
... counter += 1
...
>>> counter
2