Potrzebuję utworzyć obiekt w pamięci zawierający klucze składające się z 9-cyfrowej liczby całkowitej i wartości logicznej przypisanej do każdego klucza. Używam dict jak w uproszczonym przykładzie poniżej:Ograniczanie pamięci używanej przez dużego dicta
#!/usr/bin/python
from __future__ import print_function
import sys
myDict = {}
for n in range(56000):
myDict[n] = True
print('Count:',len(myDict),' Size:', sys.getsizeof(myDict))
muszę być w stanie wyszukać i pobrać wartość logiczną powiązanych z każdym klawiszem. Problemem jest rozmiar dyktatu. Używając Pythona 2.7 na 64-bitowym systemie Linux i powyższym przykładzie, rozmiar dyktatury wynosi 3,1 megabajty zgodnie z sys.getsizeof(). (około 56 bajtów na hasło do zapisu 9 cyfr plus wartość boolowska)
Potrzebuję zapisać stan boolowski (około) 55.000 wpisów w dyktafonie. Każdy klucz dyktujący jest 9 cyfrową liczbą całkowitą. Próbowałem używać liczb całkowitych i str (theInteger) jako kluczy bez zmiany wielkości dyktatu.
Czy istnieje jakiś inny rodzaj struktury danych lub metodologii, których powinienem używać, aby oszczędzać pamięć przy tak dużym zbiorze danych?
Czy naprawdę interesuje Cię tristate ("prawda", "fałsz", brak klucza w dykcie) lub tylko wartość boolowska? W tym drugim przypadku bardziej odpowiedni jest "zbiór" dla samych wartości "Prawda". – nneonneo