无需借助 csv 文件即可保存和加载复杂的 python 字典

Posted

技术标签:

【中文标题】无需借助 csv 文件即可保存和加载复杂的 python 字典【英文标题】:Saving and loading a complicated python dictionary without resorting to csv files 【发布时间】:2019-08-02 04:40:14 【问题描述】:

我一直在处理简单的字典,我知道可以保存/加载它们的唯一方法是通过pandas 中的to_csv()pd.read_csv()。因为csv 是我知道可以完成工作的唯一方法,所以有时我可能会遇到字典,其键可能与无法在csv 中正确保存/加载的复杂内容相关联,这就是我寻求帮助的原因这里。

这是我刚刚想出的一个稍微复杂的字典的例子:

import numpy as np
import pandas as pd

simple_dict1 = 'dict1': 'item1': None,
                          'item2': False,
                          'item3': 'hello world',
                          'item4': 42.42,
                          'item5': [f'item i' for i in range(42)],
                          'item6': f'itme i': i for i in range(42),
                          'item7': np.random.rand(3,42),
                          'item8': pd.DataFrame(np.random.rand(3,42), columns = [f'col i+1' for i in range(42)]) 
                          ,
                'dict2': 'item1': True,
                          'item2': 'hello',
                          'item3': 24.24,
                          'item4': [f'item i' for i in range(24)],
                          'item5': f'itme i': i for i in range(24),
                          'item6': np.random.rand(2,24),
                          'item7': pd.DataFrame(np.random.rand(2,24), columns = [f'col i+1' for i in range(24)]) 
                          ,
                'dict3': 'item1': (10,20),
                          'item2': [],
                          'item3': ,
                          'item4': (),
                          'item5': i for i in range(4),
                          'item6': f'itme i':  for i in range(24),
                          ,
                'list1': [type(item) for item in (, [], ())]
                

我的目标是创建两个函数:

功能1:将相对/绝对路径和字典作为输入,并将所述字典保存到所述路径中。

函数2:将相对/绝对路径作为输入,从所述路径读取字典,并返回所述字典。此字典需要与保存的原始字典相同。

这个问题可能问得太多了,但我真的没有深入了解如何保存/加载像上面那样的复杂字典。 先感谢您。

编辑:将其中一个标签更改为 pickle,因为 pickle 可能能够解决问题。

【问题讨论】:

不是重复的,但这可以回答您的问题。 ***.com/questions/11218477/… 【参考方案1】:

您可以使用pickle 标准库来加载和保存任意数据结构。

https://docs.python.org/3/library/pickle.html

有一些警告:如该页面所示,不要取消腌制不受信任的数据,腌制格式可能会在不同的 python 版本之间发生变化。

【讨论】:

谢谢@Matthew Schinckel,我刚刚在标签中添加了pickle,希望pickle 专家会来这里对这个话题有所了解,甚至对我的特殊问题给出答案.

以上是关于无需借助 csv 文件即可保存和加载复杂的 python 字典的主要内容,如果未能解决你的问题,请参考以下文章

将 Dataframe 保存到 csv 直接保存到 s3 Python

如何使用 Spark 加载 JSON(保存在 csv 中的路径)?

Windows 10:无需保存对话框即可打印 PDF 文件的简单方法

使用 Python 或 XSLT 将复杂的 XML 转换为 CSV

python 如何将数据写入某个csv文件的特定位置?

Excel:将工作表导出为 CSV 文件的宏,无需离开我当前的 Excel 工作表