Динамическая инициализация значения словаря в ноль в Python - PullRequest
0 голосов
/ 07 марта 2019

Я назначаю ключи словаря на лету после определения того, к какому языку относится предсказанная строка, и мне было интересно, как инициализировать ее в ноль.

from textblob import TextBlob


correct = {}     

    for i in max_dist_indices:          
...
        correct[TextBlob(predicted_labels[j]).detect_language()] += 1*(predicted_labels[i] == labels[i])

Где d etect.language() возвращает строку в соответствии ск языку в прогнозируемых метках, ' en ' для английского языка, который служит ключом.Есть идеи, как это можно сделать?

Ответы [ 2 ]

2 голосов
/ 07 марта 2019

Вы можете использовать метод dict.get:

language = TextBlob(predicted_labels[j]).detect_language()
correct[language] = correct.get(language, 0) + (predicted_labels[i] == labels[i])

или вы можете инициализировать correct как defaultdict(int) вместо:

from collections import defaultdict
correct = defaultdict(int)
correct[language] += predicted_labels[i] == labels[i]
0 голосов
/ 07 марта 2019

Со словарями у вас есть пары ключ-значение.Когда вы говорите, что хотите инициализировать ключ равным 0, я думаю, что вы хотите инициализировать его значение равным 0.

Предполагая, что 1*(predicted_labels[i] не равно labels[i]) и поэтому возвращает 0,следующие должны дать то, что вы хотите:

correct[TextBlob(predicted_labels[j]).detect_language()] = 1*(predicted_labels[i] == labels[i])

...