2010-09-15 6 views
0

j'ai un grand dictionnaire je référence en permanence dans mon code, donc je l'ai initialisé en haut:Limite de taille du dictionnaire pré-déclarée?

import ... 

myDictionary = {'a':'avalue','b':'bvalue',...} 

code ... 

Mais lorsque je tente d'obtenir des valeurs, certaines touches ne sont pas trouvés. Il semble que Python coupe mon dictionnaire en raison d'une limite de taille. J'ai essayé de chercher Google mais je n'ai rien trouvé à ce sujet.

J'ai fini par déverser les mappages clé: valeur dans un fichier séparé et j'ai écrit une fonction qui créerait le dictionnaire en lisant dans le fichier.

Il serait bon de savoir pourquoi cela se produit ... encore mieux de trouver une façon plus propre d'avoir toujours mon dictionnaire.

EDIT: Dictionnaire a plus de 1700 clés

+0

combien de touches ne le dict a? – aaronasterling

+0

1 700+ touches ... ajoutées à l'OP – makoto

+0

Je stockerais ce dictionnaire dans un fichier. Ce n'est pas un problème pour un dictionnaire, mais un peu excessif pour une ligne de code. – recursive

Répondre

2

Python n'a pas de limite de taille du dictionnaire. J'ai eu des dictionnaires avec plus d'un million de clés. Pourriez-vous poster plus de code?

+0

J'ai écrit un script de test simple où j'ai pré-déclaré un grand dictionnaire et juste imprimé la longueur: len (myDictionary) et la taille rapportée n'était même pas proche de ce qu'elle était supposée être. Il semble que le dictionnaire pré-déclaré ait des longueurs maximales différentes (limites de mémoire) que les dictionnaires construits une clé à la fois ... J'ai demandé à mes amis d'essayer et ils voient le même résultat bizarre ... pas de gonan poster une clé de 1700 dictionnaire, il est facile à faire: – makoto

+0

MyDictionary = { '0': '0', '1': '1', '2': '2', ... Essayez seulement 300 – makoto

+1

@makoto : Quelle version de Python utilisez-vous? Je viens de créer un fichier source avec un littéral dict de l'élément 1000000, et la longueur a été correctement rapportée. –

4

Une chose que vous pourriez vouloir rechercher est que les clés dans votre dictionnaire ne sont pas des doublons. Par exemple, dans le code suivant:

>>> d = {'1': 'hello', '2': 'world', '1': 'new'} 
>>> d 
{'1': 'new', '2': 'world'} 
>>> 

parce que je l''1' clé deux fois, seul le dernier est apparu et donc je suis resté avec un dictionnaire de taille 2 plutôt que 3.

Questions connexes