Хранение словаря с числовыми и строковыми данными - PullRequest
0 голосов
/ 03 мая 2018

У меня есть словарь Python с некоторыми целыми числами ключей / значений, другие строки.

Я ищу способ сохранить этот словарь как один файл со следующими условиями:

  1. Тип чувствительности клавиш и значения сохраняются.
  2. Я могу просмотреть отображение вне Python.

Я пробовал следующие решения, но безуспешно. Есть ли способ сделать это, желательно без дополнительных требований к хранилищу / манипуляций?

Json

Чувствительность типа поддерживается для значений, но не для ключей:

import json

d = {'key1': 1, 2: '1'}

with open(loc2, 'w') as fp:
    json.dump(d, fp, indent=4)

with open(loc2, 'r') as fp:
    d = json.load(fp)

{'2': '1', 'key1': 1}

HDF5

Имена наборов данных HDF5 должны быть строками, так что это та же проблема, что и у Json:

import h5py

f = h5py.File('file.h5', 'w', libver='latest')

for k, v in d.items():
    f.create_dataset(str(k), data=v)

f.close()

Ответы [ 2 ]

0 голосов
/ 03 мая 2018

Вы можете использовать Yaml . Установить pip install pyyaml.

import yaml

data = {
    'key1': 1,
    1: 2
}

with open('data.yml', 'w') as outfile:
    yaml.dump(data, outfile, default_flow_style=False)

Выходной файл:

1: 2  
key1: 1

Чтение файла:

with open("data.yml", 'r') as stream:
    data = yaml.load(stream)
    print data[1] # 2
0 голосов
/ 03 мая 2018

Вы можете записать файл в виде строки

>>> file = open('file.txt', 'w')
>>> file.write(str({'key1': 1, 2: '1'}))

Затем чтение возвращается с помощью ast.literal_eval

>>> import ast
>>> ast.literal_eval(file.read())
>>> {'key1': 1, 2: '1'}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...