Taille maximale d'un dictionnaire en Python?
Je suis à l'aide d'un dictionnaire python pour contenir un grand nombre d'objets, et d'avoir un nom de chaîne pour chacun d'eux. Pour être précis, voici mon code:
from itertools import product
for (i,j,k) in product(range(N),range(M),range(K)):
var_name='x_'+'_'+str(i)+str(j)+'_'+str(k)
var_dict[var_name] = f(var_name,other_params)
print len(var_dict)
f(...) renvoie un objet. Dans mon code N=363, M=500, et K=2. J'attends donc 363000 entrées dans le dictionnaire. Mais quand je vérifie la longueur de var_dict, il est 330860!!!
(Apb) len(var_dict)
330860
Voici mes questions:
1)Est il une explication à cela? E. g. est-il une limite pour le nombre d'éléments intégrés dans la table de hachage de python, il est possible d'adresse?
2) Que puis-je faire pour résoudre ce problème?
Merci!
Comme une suggestion, quand apparemment des choses étranges, comme cela se produit, vous devez vérifier (comme par incrémentation d'un compteur dans la boucle) que vous êtes en fait, mettre autant d'articles dans le récipient que vous attendez.
OriginalL'auteur Alt | 2014-05-08
Vous devez vous connecter pour publier un commentaire.
Le problème est ici:
Cela ne produit pas d'identificateurs uniques. Par exemple, la valeur définie lors de la
i=1
etj=11
sera remplacé par la valeur définie lors de lai=11
etj=1
(il y en a de nombreux autres exemples).Vous pouvez résoudre le problème en insérant quelques caractère délimiteur entre les deux chiffres (comme un trait de soulignement comme vous avez entre
j
etk
).OriginalL'auteur Andrew Medico
Vous n'avez pas de séparateur entre les
i
etj
dans votre construit des chaînes, donc tuples comme(12, 1, 0)
et(1, 21, 0)
produire le même nom. Si possible, ne faites pas les noms de ces choses à tous; il suffit d'utiliser les numéros directement:Si
f
vraiment besoin de prendre une corde, changer le nom de la construction pour mettre un séparateur entrei
etj
:et, si possible, utiliser le tuple comme dict la clé même si
f
besoins d'une chaîne de caractères:OriginalL'auteur user2357112
Pas de la taille de limitation sur les dict
Il imprime
OriginalL'auteur Sharath