Выбор списка, состоящего из 'n' 2-значных значений - PullRequest
1 голос
/ 12 мая 2011

Я хочу выбрать список, так как создание списка занимает много времени.Список состоит из «n» значений из двух кортежей, где первое значение кортежа - это большой словарь (от 1 до 10 тысяч ключей), а второе значение - строка.N может составлять от 100 до 1000 с.Я хотел бы сохранить такую ​​структуру данных, чтобы я мог загрузить ее для удобства.Если бы этот список читался человеком, это было бы здорово, но не за счет производительности.

У меня есть знания о Полке , PyYaml , cPickle и JSON .Я просто не уверен относительно того, что использовать, учитывая мои данные.Первоначальное прочтение различных других тем на этом сайте и в Интернете говорит о том, что cPickle может быть лучшим выбором.Есть мысли от гуру?

1 Ответ

1 голос
/ 12 мая 2011

Я бы использовал cPickle, это прекрасно работает,

# Dummy data
from random import randint as r

a,b = 97,123

d = [(dict([(chr(r(a,b)),j) for j in range(1000)]),
       ''.join([chr(r(a,b)) for i in range(5)])) 
                            for j in range(100)]

# Pickle it
import cPickle as pickle

f = open('store.dat','w')
pickle.dump(d,f)
f.close()

Я бы также рассмотрел использование чего-то вроде dumbdbm .

Добавлено позже

Исходя из приведенного выше примера, вы можете сделать что-то вроде этого,

import dumbdbm as dbm

g = dbm.open('store.db')
g.update([(str(i),pickle.dumps(j)) for i,j in enumerate(d)])
g.close()
...