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?
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()))
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']
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)
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