J'ai un dictionnaire avec plus de 20 000 entrées avec pour l'instant le mot unique et le nombre d'utilisations de ce mot dans le texte source (Divine Comedy de Dante en italien).
Je voudrais travailler à travers toutes les entrées en remplaçant la valeur par une définition réelle telle que je la trouve. Existe-t-il un moyen simple de parcourir les mots-clés ayant pour valeur un nombre afin de les remplacer (au fur et à mesure que je recherche le sens)?
Le dictionnaire commence:
{'corse': 378, 'cielo,': 209, 'mute;': 16, 'torre,': 11, 'corsa': 53, 'assessin': 21, 'corso': 417, 'Tolomea': 21} # etc.
Tri d'une application qui suggérera un mot clé à rechercher et à définir.
Vous ne pouvez pas sélectionner des valeurs spécifiques (ou des types de valeurs). Vous pouvez soit créer un index inversé (les numéros de carte correspondent à (des listes) de clés), soit vous devez parcourir en boucle les valeurs toutes à chaque fois.
De toute façon, si vous traitez des numéros dans un ordre arbitraire, vous pouvez également parcourir tous les éléments:
for key, value in inputdict.items():
# do something with value
inputdict[key] = newvalue
sinon j'irais avec l'index inverse:
from collections import defaultdict
reverse = defaultdict(list)
for key, value in inputdict.items():
reverse[value].append(key)
Vous pouvez maintenant rechercher les clés par valeur:
for key in reverse[value]:
inputdict[key] = newvalue
Si vous avez besoin d’une solution déclarative , vous pouvez utiliser dict.update()
pour modifier les valeurs d’un dict.
Soit comme ça:
my_dict.update({'key1': 'value1', 'key2': 'value2'})
ou comme ça:
my_dict.update(key1='value1', key1='value2')
Si vous parcourez un dictionnaire, vous obtenez les clés. En supposant que votre dictionnaire se trouve dans une variable appelée data
et que vous ayez une fonction find_definition()
qui obtient la définition, vous pouvez procéder comme suit:
for Word in data:
data[Word] = find_definition(Word)