2012-07-06 4 views
5

J'analyse des centaines de millions d'enregistrements JSON et stocke les composants pertinents de chacun dans un dict. Le problème est que, en raison du nombre d'enregistrements que je suis en train de traiter, python est forcé d'augmenter plusieurs fois la taille de la table de hachage sous-jacente de dict. Cela entraîne beaucoup de données à refaire. Le montant même de ressasser lui-même semble coûter beaucoup de temps. Par conséquent, je me demande s'il existe un moyen de définir une taille minimale sur la table de hachage sous-jacente de dict afin que le nombre d'opérations de redimensionnement soit réduit.python dict set min_size

J'ai lu this sur l'optimisation dict de python, d'une réponse sur this question, mais ne peut pas trouver comment changer la taille initiale d'une table de hachage de dict. Si quelqu'un peut m'aider avec cela, je serais très reconnaissant.

Merci

Répondre

2

Si vous faites ceci:

a = dict.fromkeys(range(n)) 

il forcera la taille du dictionnaire pour accueillir les articles n. C'est assez rapide après cela, mais il faut 3s pour le faire.

+0

Bien sûr, cela me donne la bonne taille. Mais ça ne me donne pas les bonnes clés. Je devrais supprimer toutes les clés 'n' et repeupler avec les bonnes, comme je traite chaque enregistrement JSON. Cela ne serait-il pas lent? – inspectorG4dget

+0

Il devrait aider avec la vitesse. Écrivez un petit test qui le fait. Cela créera un dict d'une taille connue avec toutes les valeurs par défaut soit None soit une valeur de votre choix. –

+0

Y a-t-il une solution plus simple que l'artificielle soufflant la structure de données avec des valeurs indésirables? :( – comiventor