【问题标题】:Saving and loading a complicated python dictionary without resorting to csv files无需借助 csv 文件即可保存和加载复杂的 python 字典
【发布时间】: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 可能能够解决问题。

【问题讨论】:

标签: python file dictionary save pickle


【解决方案1】:

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

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

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

【讨论】:

  • 谢谢@Matthew Schinckel,我刚刚在标签中添加了pickle,希望pickle 专家会来这里对这个话题有所了解,甚至对我的特殊问题给出答案.
猜你喜欢
  • 2019-09-15
  • 1970-01-01
  • 2019-01-10
  • 2020-10-17
  • 2020-02-26
  • 2021-12-10
  • 1970-01-01
  • 1970-01-01
  • 2020-02-16
相关资源
最近更新 更多