Python辞書の置換値

私は2万以上の項目を持つ辞書を持っていますが、現時点では、固有の単語と、その単語が原文(イタリア語のDante's Divine Comedy)で使われた回数だけが記載されています。

すべてのエントリーを調べて、実際の定義を見つけたら、その値に置き換えたいと思っています。意味を調べながら)置換するために、値として数字を持つキーワードを繰り返し検索する簡単な方法はありますか?

辞書は以下の通りです。

{'corse': 378, 'cielo,': 209, 'mute;': 16, 'torre,': 11, 'corsa': 53, 'assessin': 21, 'corso': 417, 'Tolomea': 21}  # etc.

調べて定義するキーワードを提案してくれるアプリケーションのようなもの。

特定の値(または値の種類)を選択することはできません。逆インデックスを作成するか(数字を(キーのリストに)戻す)、あるいは毎回、すべての値をループする必要があります。

どうせ任意の順序で数字を処理するのであれば、すべての項目をループしたほうがいいでしょう。

for key, value in inputdict.items():
    # do something with value
    inputdict[key] = newvalue

そうでなければ、私は逆のインデックスを使います。

from collections import defaultdict

reverse = defaultdict(list)
for key, value in inputdict.items():
    reverse[value].append(key)

これで、キーを値で調べられるようになりました。

for key in reverse[value]:
    inputdict[key] = newvalue
解説 (4)

辞書を反復処理すると、キーが得られるので、辞書が data という変数に入っていて、定義を取得する find_definition() という関数があると仮定すると、次のようなことができます。

for word in data:
    data[word] = find_definition(word)
解説 (0)
ソリューション

ここでは、キーを見つけて値を交換する関数を紹介します。

current_dict = {'corse': 378, 'cielo': 209, 'mute': 16}
print(current_dict)
def replace_value_with_definition(key_to_find, definition):
    for key in current_dict.keys():
        if key == key_to_find:
            current_dict[key] = definition

replace_value_with_definition('corse', 'Definition of "corse"')
print(current_dict)

と出力されます。

{'corse': 378, 'cielo': 209, 'mute': 16}
{'corse': 'Definition of "corse"', 'cielo': 209, 'mute': 16}

辞書のループに時間がかかりすぎる場合は、ジェネレータ機能を使ってみてください。

def gen_replace_value_with_definition(key_to_find, definition):
    for key in current_dict.keys():
        if key == key_to_find:
            current_dict[key] = definition
            yield True
    yield False

found = False
while not found:
    found = next(gen_replace_value_with_definition('corse', 'Definition of "corse" via generator'))

print(current_dict)

出力します。

{'corse': 'Definition of "corse" via generator', 'cielo': 209, 'mute': 16}
解説 (2)