Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Модуль shelve и кортеж в качестве ключа 
:(
    Опции темы
srd
Дата 16.5.2007, 02:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нереварин
**


Профиль
Группа: Участник Клуба
Сообщений: 951
Регистрация: 30.8.2003
Где: Владивосток

Репутация: 7
Всего: 49



В процессе работы скрипта формируется некоторый словарь. Надо, чтобы этот словарь можно было загружать из файла и сохранять в файл. В стандартной библиотеке есть замечательный модуль shelve, который фактически делает то, что надо. Но у него есть ограничение - ключами в словаре могут выступать только строки. У меня же ключ - это кортеж (кортеж строк). Как можно обойти это ограничение?

1. Склеивать элементы кортежа в одну строку (с каким-нибудь символом-разделителем)?
2. Воспользоваться модулем pickle?
3. Ещё какие-нибудь варианты?

Какой способ лучше?


--------------------
Не смей читать мою подпись!!!
PM MAIL Jabber   Вверх
rgb
Дата 17.5.2007, 09:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 31.8.2006

Репутация: 1
Всего: 2



pickle вполне подойдет
Код

f=open(file_name,"wt")
p=pickle.Pickler(f)
#сохранение в файле переменной v (будь-то словарь, кортеж, список или че там вздумается)
p.dump(v)
#чтение сохраненного ранее объекта из файла
f=open(file_name,"r")
v=pickle.load(f)


Это сообщение отредактировал(а) rgb - 17.5.2007, 09:22
PM MAIL ICQ   Вверх
setq
Дата 17.5.2007, 10:37 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата(rgb @  17.5.2007,  09:20 Найти цитируемый пост)
pickle вполне подойдет


rgb, а если словарь большой и весь в памяти не нужен?

  Вверх
Artemios
Дата 18.5.2007, 17:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 405
Регистрация: 14.8.2006
Где: Саратов, Россия

Репутация: 18
Всего: 50



Цитата(setq @  17.5.2007,  11:37 Найти цитируемый пост)
а если словарь большой и весь в памяти не нужен?

Можно элементы словаря сериализовать поотдельности (не в файл, в строки), а потом хоть в shelve, хоть в sqlite3 ... 


--------------------
fib = 1: 1: [ x+y | (x,y) <- zip fib (tail fib) ]
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Python: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.3169 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.