web-dev-qa-db-fra.com

Compter le nombre de mots-clés dans un dictionnaire dans python

J'ai une liste de mots dans un dictionnaire avec la valeur = la répétition du mot-clé mais je veux seulement une liste de mots distincts, donc je voulais compter le nombre de mots-clés. Existe-t-il un moyen de compter le nombre de mots-clés ou existe-t-il un autre moyen de rechercher des mots distincts?

199
Dan
len(yourdict.keys())

ou juste

len(yourdict)

Si vous aimez compter des mots uniques dans le fichier, vous pouvez simplement utiliser set et faire comme

len(set(open(yourdictfile).read().split()))
351
YOU

Le nombre de mots distincts (c'est-à-dire le nombre d'entrées du dictionnaire) peut être trouvé à l'aide de la fonction len().

> a = {'foo':42, 'bar':69}
> len(a)
2

Pour obtenir tous les mots distincts (c’est-à-dire les touches), utilisez la méthode .keys().

> list(a.keys())
['foo', 'bar']
27
kennytm

L'appel de len() directement sur votre dictionnaire fonctionne et est plus rapide que la construction d'un itérateur, d.keys(), et l'appel de len(), mais la vitesse de l'un ou de l'autre sera négligeable par rapport à votre programme fait.

d = {x: x**2 for x in range(1000)}

len(d)
# 1000

len(d.keys())
# 1000

%timeit len(d)
# 41.9 ns ± 0.244 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each)

%timeit len(d.keys())
# 83.3 ns ± 0.41 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each)
2

Si la question concerne le nombre de mots-clés, nous vous recommandons quelque chose comme:

def countoccurrences(store, value):
    try:
        store[value] = store[value] + 1
    except KeyError as e:
        store[value] = 1
    return

dans la fonction principale, avoir quelque chose qui passe en boucle dans les données et transmet les valeurs à la fonction countoccurrences

if __== "__main__":
    store = {}
    list = ('a', 'a', 'b', 'c', 'c')
    for data in list:
        countoccurrences(store, data)
    for k, v in store.iteritems():
        print "Key " + k + " has occurred "  + str(v) + " times"

Les sorties de code

Key a has occurred 2 times
Key c has occurred 2 times
Key b has occurred 1 times
2
David