#!/usr/bin/python3# -*- encoding: utf-8 -*-importpprint# Fichier 1.5Mo, lu en une seule fois pour pouvoir reboucler dessus.withopen("/usr/share/dict/french",encoding='utf-8')asf:mots=f.read().splitlines()print("Nombre de mots:",len(mots))smots=set(mots)# Fichier 917K. Lu en une seule fois, mais on pourrait faire au fur et à mesure.withopen("/usr/share/dict/american-english",encoding='utf-8')asf:eng=f.read().splitlines()# Comptage des mots anglais présents dans le français.cpt=0formineng:ifminsmots:cpt+=1print("Mots communs:",cpt)
Me donne:
pointal@soupir:~$ time python3 collisions.py
Nombre de mots: 139719
Mots communs: 6139
real 0m0.165s
user 0m0.144s
sys 0m0.020s
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
[^] # Re: Le type "set" ?
Posté par lolop (site web personnel) . En réponse au message Algo ; Evitez les doubles "boucles" ?. Évalué à 3.
Faudrait voir dans les détails comment ils se débrouillent (http://www.laurentluce.com/posts/python-dictionary-implementation/ => ils redimensionnent dès qu'une table de hachage est pleine aux deux tiers)... un petit test, en utilisant les dictionnaire installés:
Me donne:
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN