С Python я могу сохранить постоянный словарь и изменить его?

В OS X обновления Xcode иногда прерываются readline. Решение:

brew uninstall readline
brew upgrade python3
brew install readline
pip3 install readline

Если проблема по-прежнему сохраняется, попробуйте удалить readline с помощью pip и установить его с помощью easy_install:

pip3 uninstall readline
easy_install readline
13
задан 5 August 2009 в 05:10
поделиться

5 ответов

Если ваши ключи (не обязательно значения) являются строками, модуль стандартной библиотеки shelve делает то, что вы хотите, без проблем.

18
ответ дан 1 December 2019 в 19:40
поделиться

Отменить выборку из файла при загрузке программы, изменить как обычный словарь в памяти во время работы программы, сохранить в файл при выходе из программы? Не уверен, что именно вы здесь просите.

6
ответ дан 1 December 2019 в 19:40
поделиться

Предполагая, что ключи и значения имеют рабочие реализации repr , одним из решений является сохранение строкового представления словаря ( repr (dict) ) в файл. Вы можете загрузить его с помощью функции eval ( eval (inputstring) ). У этого метода есть два основных недостатка:

1) Is не будет работать с типами, у которых есть неиспользуемая реализация repr (или даже может показаться, что работает, но не работает). Вам нужно будет обратить хотя бы некоторое внимание на то, что происходит.

2) Ваш механизм загрузки файлов в основном напрямую выполняет код Python. Не очень хорошо для безопасности, если вы полностью не контролируете ввод.

У этого есть одно преимущество: Абсурдно легко сделать.

1
ответ дан 1 December 2019 в 19:40
поделиться

Мой любимый метод (который не использует стандартные функции словаря Python): чтение / запись файлов YAML с использованием PyYaml . Подробности см. В этом ответе , кратко изложенном здесь:

Создайте файл YAML, «loyment.yml »:

new jersey:
  mercer county:
    pumbers: 3
    programmers: 81
  middlesex county:
    salesmen: 62
    programmers: 81
new york:
  queens county:
    plumbers: 9
    salesmen: 36

Шаг 3. Прочтите его на Python

import yaml
file_handle = open("employment.yml")
my__dictionary = yaml.safe_load(file_handle)
file_handle.close()

, и теперь my__dictionary содержит все значения. Если вам нужно было сделать это на лету, создайте строку, содержащую YAML, и проанализируйте ее с помощью yaml.safe_load.

1
ответ дан 1 December 2019 в 19:40
поделиться

травление имеет один недостаток. это может быть дорого, если ваш словарь нужно часто читать и записывать с диска и он большой. pickle сбрасывает все (целиком). unpickle поднимает материал (в целом).

Если вам нужно работать с маленькими диктаторами, можно использовать рассол. Если вы собираетесь работать с чем-то более сложным, выбирайте berkelydb. В основном он предназначен для хранения пар ключ: значение.

0
ответ дан 1 December 2019 в 19:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: