Python 将dict保存到pickle还是写入文件?

Python 将dict保存到pickle还是写入文件?,python,pickle,Python,Pickle,我有一个Python脚本,它返回一个dict,我想把它存储在某个地方,以便在一个更大的项目中使用(脚本运行缓慢,所以我不想每次需要字典时都导入脚本) dict很小,所以我有两种选择。我可以: 将dict保存到pickle文件 将dict作为文本写入新的.py文件,如下所示: my_dict = slow_func() with open('stored_dict.py', 'w') as py_file: file_contents = 'stored_dict = ' + str(my

我有一个Python脚本,它返回一个dict,我想把它存储在某个地方,以便在一个更大的项目中使用(脚本运行缓慢,所以我不想每次需要字典时都导入脚本)

dict很小,所以我有两种选择。我可以:

  • 将dict保存到pickle文件
  • 将dict作为文本写入新的.py文件,如下所示:

    my_dict = slow_func()
    with open('stored_dict.py', 'w') as py_file:
        file_contents = 'stored_dict = ' + str(my_dict)
        py_file.write(my_dict)
    
    然后我可以使用
    from storaged\u dict import storaged\u dict


  • 我应该选择这些选项中的一个吗?

    Python dict的实现方式类似于
    json
    。您可以使用
    json
    模块将dict转储到文件中,并轻松地将其加载回:

    import json
    
    d = {1: 'a', 2: 'b', 3: 'c'}
    
    with open('C:\temp.txt', 'w') as file:
        json.dump(d, file)
    
    with open('C:\temp.txt', 'r') as file:
        new_d = json.load(file)
    
    >>> new_d
    {u'1': u'a', u'3': u'c', u'2': u'b'}
    

    根据我个人的经验,我建议在以下情况下使用JSON:

    • 你想要一个可读的文件
    • 一种跨多种技术兼容的文件类型,无需太多的实现开销
    • 一个易于编辑的文件(因为它可以是一个简单的文本文件)
    我建议在以下情况下使用Pickle:

    • 该项目的大部分内容将用python编写
    • 词典可能变得非常大/复杂,或者被合并到一个更大的类中
    • 需要非人类可读的文件
    • 在事先不知道其结构的情况下很难编辑的文件

    根据您在问题中遇到的情况,JSON将是更有益的选择。

    您可以将其转储到
    JSON
    文件,该文件看起来与dict相同。的可能重复也请参见:取决于该词典中包含的数据……感谢您的建议。我本来打算做pickle,但我知道这本字典仍然可以用纯文本阅读是很有价值的;因此,我选择使用Json。我的字典中有数据帧,我得到错误:
    TypeError:DataFrame类型的对象不是Json可序列化的