#python #list
#python #Список
Вопрос:
Ожидается, что на выходе также будет список строк.
Например ['hey', 'ho', 'hi', 'hey', 'ho']
, следует выводить ['hey', 'ho']
def find_most_popular(list):
popular = max(set(list), key=list.count)
return popular
Мой код выводит только один самый популярный
Спасибо!
Ответ №1:
Это то, что вам нужно (я использовал «l» вместо «list», чтобы избежать путаницы со встроенным типом данных «list»):
def find_most_popular(l):
popular = [i for i in l if l.count(i)==max([l.count(p) for p in set(l)])]
return list(set(popular))
Для
your_list=['hey', 'ho', 'hi', 'hey', 'ho']
Результат будет:
find_most_popular(your_list)
['hey', 'ho']
Ответ №2:
Вы можете использовать collections.Counter
:
from collections import Counter
c = Counter(['hey', 'ho', 'hi', 'hey', 'ho'])
print([k for k, v in c.items() if v==c.most_common()[0][1]])
С принтами:
['hey', 'ho']