Saya memiliki kamus dengan 20.000 lebih entri yang saat ini hanya berisi kata unik dan berapa kali kata itu digunakan dalam teks sumber (Dante's Divine Comedy dalam bahasa Italia).
Saya ingin bekerja melalui semua entri menggantikan nilai dengan definisi aktual saat saya menemukannya. Apakah ada cara sederhana untuk mengulang-ulang kata kunci yang memiliki nilai angka untuk diganti (saat saya meneliti artinya)?
Kamus dimulai:
{'corse': 378, 'cielo,': 209, 'mute;': 16, 'torre,': 11, 'corsa': 53, 'assessin': 21, 'corso': 417, 'Tolomea': 21} # etc.
Semacam aplikasi yang akan menyarankan kata kunci untuk diteliti dan didefinisikan.
Anda tidak dapat memilih pada nilai tertentu (atau jenis nilai). Anda harus membuat indeks terbalik (memetakan angka-angka kembali ke (daftar) kunci) atau Anda harus mengulang-ulang semua nilai setiap saat.
Jika Anda memproses angka dalam urutan sembarang, Anda mungkin juga mengulang melalui semua item:
for key, value in inputdict.items():
# do something with value
inputdict[key] = newvalue
jika tidak, saya akan menggunakan indeks terbalik:
from collections import defaultdict
reverse = defaultdict(list)
for key, value in inputdict.items():
reverse[value].append(key)
Sekarang Anda bisa mencari kunci berdasarkan nilai:
for key in reverse[value]:
inputdict[key] = newvalue
Jika anda mengiterasi kamus, anda akan mendapatkan kunci-kuncinya, jadi dengan asumsi kamus anda berada dalam variabel yang disebut data
dan anda memiliki fungsi find_definition()
yang mendapatkan definisinya, anda dapat melakukan sesuatu seperti berikut ini:
for word in data:
data[word] = find_definition(word)
Berikut ini adalah fungsi yang akan menemukan kunci Anda dan mengganti nilai Anda.
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)
Keluarannya adalah:
{'corse': 378, 'cielo': 209, 'mute': 16}
{'corse': 'Definition of "corse"', 'cielo': 209, 'mute': 16}
Jika Anda merasa terlalu lama untuk mengulang kamus Anda, cobalah fungsi generator:
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)
Keluaran:
{'corse': 'Definition of "corse" via generator', 'cielo': 209, 'mute': 16}