web-dev-qa-db-fra.com

Python dictionnaire remplace les valeurs

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.

36
user1478335

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
55
Martijn Pieters

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')
30
Rotareti

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)
7
Andrew Clark