le comptage en double des mots en python le moyen le plus rapide

J'essayais de compter en double les mots-dessus une liste de 230 mille mots.J'ai utilisé python, dictionnaire de le faire. Le code est donné ci-dessous:

for words in word_list:
    if words in word_dict.keys():
       word_dict[words] += 1
    else:
       word_dict[words] = 1

Le code ci-dessus a pris 3 minutes!. J'ai couru le même code, plus de 1,5 millions de mots, et il était en marche pendant plus de 25 minutes et j'ai perdu ma patience et de la fin. Ensuite, j'ai trouvé que je peux utiliser le code suivant à partir ici (voir également ci-dessous). Le résultat était tellement surprenante, elle a complété en quelques secondes!. Donc ma question est quel est le moyen plus rapide de faire cette opération?. Je suppose que le dictionnaire processus de création doit être prise de O(N) fois. Comment était la Contre la méthode de mesure de terminer ce processus en quelques secondes et créer une exacte dans le dictionnaire de mot-clé et la fréquence comme c'est la valeur?

from collections import Counter
word_dict = Counter(word_list)
Il peut être aussi parce que word_dict.keys() obtient toutes les clés dans une liste, et la vérification de l'appartenance à une liste est une O(n) opération, lors de la vérification de l'appartenance à une table de hachage est beaucoup plus rapide.
Code pour collections.Counter est disponible hg.python.org/cpython/file/2.7/Lib/collections.py
connexes: Python Est un dictionnaire lent à trouver la fréquence de chaque caractère?

OriginalL'auteur Rkz | 2013-01-17