Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.01.2022, 16:31   #1
Галина_Д
Пользователь
 
Регистрация: 13.01.2022
Сообщений: 14
По умолчанию Словари

Добрый день. Помогите, пож-та, застряла в прописании кода и не могу найти решения.
У меня есть переменная, в которой хранится список поисковых запросов. Необходимо написать код, который выведет на экран распределение количества слов в запросах в следующем виде:
Поисковых запросов, содержащих 2 слов(а): 42.86%
Поисковых запросов, содержащих 3 слов(а): 57.14%
Я прописала код, в котором создала словарь, где ключ - кол-во слов в запросе, а значение - кол-во запросов. Но у меня почему-то не накапливается кол-во запросов.

Код:
queries = [
'смотреть сериалы онлайн',
'новости спорта',
'афиша кино',
'курс доллара',
'сериалы этим летом',
'курс по питону',
'сериалы про спорт'
]
my_dict = dict()
query = 0

for query in queries:
  query_splited = query.split(' ')
  if query not in my_dict:
    word = len(query_splited)
    my_dict[word] = 1
  else:
    my_dict[word] += 1

print(my_dict)
Галина_Д вне форума Ответить с цитированием
Старый 14.01.2022, 16:50   #2
ForenLi
Форумчанин
 
Регистрация: 02.06.2021
Сообщений: 515
По умолчанию

Ну так прочитайте, что написали:
Код:
for query in queries:       // для запроса из запросов
  query_splited = query.split(' ')
  if query not in my_dict:           // есть ли запрос в словаре, откуда он там?
    word = len(query_splited)
    my_dict[word] = 1               // записать 1
  else:
    my_dict[word] += 1
У вас else никогда не будет работать.
ForenLi вне форума Ответить с цитированием
Старый 15.01.2022, 00:04   #3
Галина_Д
Пользователь
 
Регистрация: 13.01.2022
Сообщений: 14
По умолчанию

Поняла, тогда все равно я в тупике, как прописать условия для того, чтобы считалось кол-во запросов согласно кол-ву слов в них.

Код:
queries = [
'смотреть сериалы онлайн',
'новости спорта',
'афиша кино',
'курс доллара',
'сериалы этим летом',
'курс по питону',
'сериалы про спорт'
]
my_dict = dict()
query = 0

for query in queries:
  query_splited = query.split(' ')
  word = len(query_splited) # ключ
  if my_dict[word] 

print(my_dict)
Галина_Д вне форума Ответить с цитированием
Старый 15.01.2022, 07:05   #4
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,285
По умолчанию

Ищите количество слов в новом словаре, а не сам запрос.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 16.01.2022, 00:26   #5
Галина_Д
Пользователь
 
Регистрация: 13.01.2022
Сообщений: 14
По умолчанию

Я уже просто голову сломала. Огромная просьба более конкретно помочь.
Если я прописываю код следующим образом, то у меня прописываются ключи. И чтобы проверить информацию по их значению, то я просто задаю ему цифру 5. Тогда код работает верно:
Код:
queries = [
'смотреть сериалы онлайн',
'новости спорта',
'афиша кино',
'курс доллара',
'сериалы этим летом',
'курс по питону',
'сериалы про спорт'
]
m_dict = dict()
query = 0

for query in queries:
  query_splited = query.split(' ')
  query = len(query_splited)    
  m_dict[query] = 5     


print(m_dict)
А вот так я пытаюсь прописать код, чтобы значения у ключей были верные (нужно кол-во запросов с тремя словами было значением ключа 3 и соответственно кол-во запросов с двумя словами было значением ключа 2). Но тогда на выходе вообще ничего нет, просто пустой словарь.

Код:
queries = [
'смотреть сериалы онлайн',
'новости спорта',
'афиша кино',
'курс доллара',
'сериалы этим летом',
'курс по питону',
'сериалы про спорт'
]
my_dict = dict()          

num = 0

for query in queries:
  query = query.split(' ')
  query = len(query_splited) 
  for num in my_dict:
    if len(query_splited) == 2:
      num += 1 
      my_dict['2'] = num
    else:
      my_dict['3'] = len(queries) - num

print(my_dict)
Галина_Д вне форума Ответить с цитированием
Старый 16.01.2022, 04:23   #6
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,285
По умолчанию

Код:
queries = [
    'смотреть сериалы онлайн',
    'новости спорта',
    'афиша кино',
    'курс доллара',
    'сериалы этим летом',
    'курс по питону',
    'сериалы про спорт'
]

m_dict = dict()

for query in queries:
    query_len = len(query.split(' '))
    if query_len in m_dict:
        m_dict[query_len] += 1
    else:
        m_dict[query_len] = 1

print(m_dict)

queries_count = len(queries)
for query_len, query_count in sorted(m_dict.items()):
    print('Поисковых запросов, содержащих %d слов(а): %.2f%%' % (query_len, 100 * query_count / queries_count))
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 16.01.2022, 10:00   #7
Галина_Д
Пользователь
 
Регистрация: 13.01.2022
Сообщений: 14
По умолчанию

Спасибо вам огромное!!!!
Галина_Д вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Словари и ключи print_Alex Помощь студентам 1 09.10.2019 08:01
Списки и словари print_Alex Помощь студентам 0 09.10.2019 02:20
Работа с большим кол-вом строк, словари, массивы, коллекции KaSS Microsoft Office Excel 37 30.08.2013 16:15
словари для таблицы из массива Dmitriy84S БД в Delphi 5 19.08.2008 11:04