无需求助于 csv 文件即可保存和加载复杂的 python 字典
Saving and loading a complicated python dictionary without resorting to csv files
我处理简单词典已有一段时间了,我知道 save/load 它们的唯一方法是通过 pandas
中的 to_csv()
和 pd.read_csv()
。因为 csv
是我所知道的唯一可以完成工作的方法,所以有时我可能会遇到字典,其键可能与无法在 csv
中正确 saved/loaded 的复杂内容相关联,这是为什么我在这里寻求帮助。
这是我刚刚想出的一个稍微复杂的字典的例子:
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 ({}, [], ())]
}
我的目标是创建两个函数:
功能一:将relative/absolute路径和字典作为输入,将字典保存到路径中。
功能2:以relative/absolute路径为输入,从该路径读取字典,return该字典。该词典需要与保存的原始词典相同。
这个问题可能问的太多了,但我真的没有深入了解如何save/load像上面那样复杂的字典。
先感谢您。
编辑:将其中一个标签更改为 pickle,因为 pickle 可能能够解决问题。
您可以使用 pickle
标准库加载和保存任意数据结构。
https://docs.python.org/3/library/pickle.html
注意事项:如该页面所示,请勿取消选择不受信任的数据,不同 python 版本之间的 pickle 格式可能会发生变化。
我处理简单词典已有一段时间了,我知道 save/load 它们的唯一方法是通过 pandas
中的 to_csv()
和 pd.read_csv()
。因为 csv
是我所知道的唯一可以完成工作的方法,所以有时我可能会遇到字典,其键可能与无法在 csv
中正确 saved/loaded 的复杂内容相关联,这是为什么我在这里寻求帮助。
这是我刚刚想出的一个稍微复杂的字典的例子:
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 ({}, [], ())]
}
我的目标是创建两个函数:
功能一:将relative/absolute路径和字典作为输入,将字典保存到路径中。
功能2:以relative/absolute路径为输入,从该路径读取字典,return该字典。该词典需要与保存的原始词典相同。
这个问题可能问的太多了,但我真的没有深入了解如何save/load像上面那样复杂的字典。 先感谢您。
编辑:将其中一个标签更改为 pickle,因为 pickle 可能能够解决问题。
您可以使用 pickle
标准库加载和保存任意数据结构。
https://docs.python.org/3/library/pickle.html
注意事项:如该页面所示,请勿取消选择不受信任的数据,不同 python 版本之间的 pickle 格式可能会发生变化。