Работа со словарями Python

Marina10

Новичок
Пользователь
Апр 29, 2020
12
0
1
Добрый день. У меня дан словарь который выглядит следующим образом dict1 = {"data" : {"0": "2020-01-22", "2020-02-22"},
"title" : "text",
"title2" : "text" }
} где text это большие статьи.
Мне необходимо посчитать term frequency предложения a = 'quantum computing software' а именно, посчитать сколько раз каждое слово из a попадалось в text и вывести тот text где слова из a встречались намного чаще. Так как словарь вложенный, то я затрудняюсь с решением этой задачи.
 

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
Не совсем понятно задание
а именно, посчитать сколько раз каждое слово из a попадалось в text и вывести тот text где слова из a встречались намного чаще
если нужно посчитать сумму вхождений слов из строки в текст, то можно примерно так:
Python:
dict1 = {"data": {"0": "2020-01-22"},
         "title": "quantum computing software",
         "title2": "quantum computing software quantum computing software quantum computing software"}

a = 'quantum computing software'

# считаем количество слов из строки a в тексте 1
x1 = 0
for i in a.split():
    x1 += dict1['title'].count(i)

# считаем количество слов из строки a в тексте 2
x2 = 0
for i in a.split():
    x2 += dict1['title2'].count(i)

print('слов из строки a в тексте 1:', x1)
print('слов из строки a в тексте 2:', x2)
# выводим текст в котором больше слов из строки a
print(dict1['title'] if x1 > x2 else dict1['title2'])
 

Marina10

Новичок
Пользователь
Апр 29, 2020
12
0
1
Не совсем понятно задание

если нужно посчитать сумму вхождений слов из строки в текст, то можно примерно так:
Python:
dict1 = {"data": {"0": "2020-01-22"},
         "title": "quantum computing software",
         "title2": "quantum computing software quantum computing software quantum computing software"}

a = 'quantum computing software'

# считаем количество слов из строки a в тексте 1
x1 = 0
for i in a.split():
    x1 += dict1['title'].count(i)

# считаем количество слов из строки a в тексте 2
x2 = 0
for i in a.split():
    x2 += dict1['title2'].count(i)

print('слов из строки a в тексте 1:', x1)
print('слов из строки a в тексте 2:', x2)
# выводим текст в котором больше слов из строки a
print(dict1['title'] if x1 > x2 else dict1['title2'])
А если файл огромный и количество titles огромное количество, такое, что займет много времени для каждого сравнения title, есть ли какой нибудь метод позволяющий сравнивать title со следующим title и так до конца документа?
 

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
есть ли какой нибудь метод позволяющий сравнивать title со следующим title и так до конца документа?
Странный вопрос - можно просто подсчитать количество слов в каждом тексте и вывести текст с наибольшим числом слов.
Вот так например:
Python:
dict1 = {"data": {"0": "2020-01-22"},
         "title": "quantum computing software",
         "title2": "quantum um computing software quantum computing software",
         "title3": "quantum computing sg software quantum computing software",
         "title4": "quantum computing softing software quantum computing software",
         "title5": "quantum computing software quantum computing software quanltum computing software",
         "title6": "quantum are quantum computing software quantum computing software",
         "title7": "quantum computing software quantum computing software quantum computing software",
         "title8": "quantum computing softtware quantum computing software",
         "title9": "quantum computing software quantum software quantum computing software",
         "title10": "quantum computing sare quantum computing software",
         "title11": "quantum compue quantum computing software",
         "title12": "quantum computing so software quantum computing software",
         "title13": "quantum computing software quantum computing software quanhftum computing software",
         "title14": "quantum computing software quantum computing software software quantum computing software",
         "title15": "quantum computing e quantum computing software",
         "title16": "quantum computing software quantum computing software quantum computing software",
         "title17": "quantum computing software quauantum computing software",
         "title18": "quantum comput computing software",
         "title19": "software quantum computing software software quantum computing software",
         "title20": "quantum software"
         }

a = 'quantum computing software'

d = {}  # словарь {title текста: количество слов из строки a}

# считаем слова из строки a в каждом тексте
for k, v in dict1.items():
    if 'title' in k:
        x = 0
        for i in a.split():
            x += dict1[k].count(i)
        d[k] = x

# выводим текст в котором больше слов из строки a
print(dict1[max(d.keys(), key=lambda x: d[x])])
 

Форум IT Специалистов