У меня есть два словаря.Первый выглядит следующим образом:
{'15': ['monter', 'boulangerie'], '44': ['être', 'méchant'], '45': ['haïr', 'Foret', 'enchanter', 'être', 'beau', 'mille', 'faux', 'jeune', 'fille', 'être', 'asseoir', 'bor', 'mer'], '47': ['comprendre', 'vie', 'perdre', 'aide', 'stp', 'maman', 'perdre', 'être', 'seul', 'ami', 'aimer']}
Второй - это словарь, содержащий слова в качестве ключа и оценки в виде значений:
values = Positive_score, Neutral_score, Negative_Score
{"beau": ['1', '3', '2'], 'seul': ['0', '1', '2'], 'cité des loups': ['230', '63', '48'], 'pavage mosaïque': ['296', '108', '0'], "répression de toute forme d'opposition": ['0', '3', '2'], 'en prendre pour': ['0', '81', '260'], 'Walt Disney Records': ['2', '3', '1'], 'paraombilical': ['3', '1', '2'], 'Eugênio': ['32', '85', '0'], 'laissant': ['0', '1', '1'], 'Baudouin de Champagne': ['2', '4', '2'], 'loi Goblet': ['3', '2', '1'], 'jeune': ['290', '49', '81'], 'Guezer': ['91', '44', '29'], "aimer": ['134', '48', '0'], 'marque de produit de luxe': ['21', '28', '2'], 'Zostérops de Woodford': ['18', '38', '0'], 'Henry Ludwell Moore': ['3', '7', '0'], 'Charlyne>prénom': ['23', '28', '0'], 'famille Masreliez': ['5', '4', '2'], 'canadienne-américaine': ['10', '3', '0'], 'bédéguar': ['63', '292', '0'], 'prix Lalande': ['2', '3', '1'], 'rapiécetais': ['2', '2', '0'], 'Maysoon': ['0', '30', '0'], 'hospice civil': ['265', '51', '50'], 'soutirer à': ['0', '6', '11'], 'faux': ['18', '21', '0'], "l'homme amphibie": ['2', '2', '1'], 'Johnny Ryan': ['5', '2', '0'], 'marcher des épaules': ['83', '85', '60'], 'faire lit à part': ['5', '5', '2'], 'Fonteny': ['4', '3', '0'], 'effet boomerang': ['96', '92', '70'], 'Guy Tirolien': ['0', '3', '0'], 'Mans-Les': ['5', '2', '0'], 'Stuart Jacques Ier': ['19', '331', '0'], 'Jupiter II': ['26', '33', '18'], 'Reuth bei Erbendorf': ['0', '10', '2'], 'couronne perlée du gland': ['1', '3', '3'], 'Wikipédia en Arabe bédouin': ['1', '2', '1'], 'Karen Karapetian': ['3', '3', '0'], 'trois mille cinq cents': ['307', '93', '0'], 'charge familiale': ['200', '68', '78'], 'Neuville-Saint-Rémy': ['0', '19', '0'], 'méchant': ['0', '25', '79'], 'modèle de simulation numérique': ['187', '111', '45'], 'Akrotiri': ['0', '313', '23']}
Из этих двух словарей я хочу создать третийтот, который будет содержать ключ первого словаря и значения будут суммой положительного, нейтрального и отрицательного балла для всех слов в списке слов, поэтому у меня будет что-то вроде этого:
Я держу ключчтобы запомнить, к чему относится счет, если он не нашел ни одного слова, я все равно добавил бы ключ в словарь, но со значениями 000:
Ожидаемые результаты
{'15'; ['0', '0' , '0'], ['44': ['0', '25', '79'], '45': ['309','73','83'], '47': ['0','1','2']}
Мой код ниже:
dico_phrases = {}
for k, v in d_filtered_words: # regarde la liste
for j in v: # regarde les élements de la liste intérieure
triplet = dico_lexique.get(j,-1)
if triplet != -1:
# Ici nous créons notre dictionnaire finale
if dico_phrases.get(repr(v)): # regarde si la cléi existe dans le dictionnaire
#si oui nous ajoutons les valeurs du dictionnaire.
#repr est utilisépour utiliser la liste comme cléde dictionnaire
t = [int(a) + int(b) for a,b in zip(dico_phrases[repr(v)] ,dico_lexique[j])] # zip prend un élement à un temps donnédans chaque
# Ajout élement et storage dans la liste
dico_phrases[repr(v)] = t #ajoute la liste au dictionnaire
else:
dico_phrases[repr(v)] = dico_lexique[j] # si la valeur n'existe pas , on garde juste le dico
# print le dico final
print(dico_phrases)
Но результат не тот, который я ожидаю: ключи не соответствуют ни ключу оригинального словаря, ни оценкам, так как я проверяю его вручную, чтобы проверить, верна ли оценка.
{"'5'": [784, 222, 0], "'4'": ['381', '121', '0'], "'7'": ['378', '172', '0']}
Я также хочу записать значения в CSV-файл, как это, но с другими столбцами:
id;d_tag;d_lemma;Positive_score;Neutral_score;Negative_score
15;##;##;0;0;0
44;##;##;0;25;79
45;##;##;309;73;83
47;##;##;0;1;2
Мой код:
dicts = d_verbatim, d_tag, d_lemma, d_filtered_words, d_score
with open('my_data.csv', 'w') as ofile:
writer = csv.writer(ofile, delimiter=';')
writer.writerow(['id', 'd_verbatim', 'd_tag', 'd_lemma', 'd_filtered_words', 'Positive Score', 'Neutral Score', 'Negative Score'])
for key in d_verbatim.keys():
writer.writerow([key] + [d[key] for d in dicts])