• [^] # Re: Le type "set" ?

    Posté par (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:

    #!/usr/bin/python3
    # -*- encoding: utf-8 -*-
    import pprint
    # Fichier 1.5Mo, lu en une seule fois pour pouvoir reboucler dessus.
    with open("/usr/share/dict/french", encoding='utf-8') as f:
     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.
    with open("/usr/share/dict/american-english", encoding='utf-8') as f:
     eng = f.read().splitlines()
    # Comptage des mots anglais présents dans le français.
    cpt = 0
    for m in eng: 
     if m in smots:
     cpt += 1
    print("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