Как вывести в процентном соотношении значения списка?

Есть следующий код:

queries = [
'смотреть сериалы онлайн',
'новости спорта',
'афиша кино',
'курс доллара',
'сериалы этим летом',
'курс по питону',
'сериалы про спорт']
for value in queries:
    percent = round(len(queries)/len(value)*100, 1)
    word = round(len(value) / len(queries))
    print('Поисковых запросов, содержащих', word, 'слов(а):', percent ,'%')

Необходимо, чтобы результат был :

Поисковых запросов, содержащих 2 слов(а): 42.86%
Поисковых запросов, содержащих 3 слов(а): 57.14%. 

А выходит:

Поисковых запросов, содержащих 3 слов(а): 30.4 %
Поисковых запросов, содержащих 2 слов(а): 50.0 %
Поисковых запросов, содержащих 1 слов(а): 70.0 %
Поисковых запросов, содержащих 2 слов(а): 58.3 %
Поисковых запросов, содержащих 3 слов(а): 38.9 %
Поисковых запросов, содержащих 2 слов(а): 50.0 %
Поисковых запросов, содержащих 2 слов(а): 41.2 %.

То есть код считает каждую фразу по отношению к общей длине списка.

Как исправить код, чтобы вышло то, что ожидается?


Ответы (1 шт):

Автор решения: MaxU
words = [len(qry.split()) for qry in queries]

for w in sorted(set(words)):
    print(f"Поисковых запросов, содержащих {w} слов(а): {words.count(w)/len(queries):.2%}")

вывод:

Поисковых запросов, содержащих 2 слов(а): 42.86%
Поисковых запросов, содержащих 3 слов(а): 57.14%
→ Ссылка