使用数字和字符串数据存储字典

时间:2018-05-03 10:31:29

标签: python file dictionary

我有一个Python字典,其中包含一些键/值整数,其他字符串。

我正在寻找一种将此词典存储为单个文件的方法,具有以下条件:

  1. 保持键和值的类型敏感度。
  2. 我可以在Python之外查看映射。
  3. 我尝试了以下解决方案,但没有成功。有没有办法做到这一点,最好没有额外的存储要求/操作?

    的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}
    

    HD​​F5

    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 :(得分:3)

您可以使用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

答案 1 :(得分:1)

您可以将文件写为字符串

>>> 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'}