python - 在 pickle 文件中添加新 key

标签 python dictionary pickle

我想以迭代的方式存储数据。

如何在已经包含字典的 pickle 中添加一些新键??

例如

with open(filename_directory, 'wb') as f:
    pickle.dump({"a" : 1, "b":2 }, f)

new_dict_ = {}
for i in range(10):
    new_dict_ [i] = i

with open(filename_directory, 'a') as f:
    pickle.dump( update_dict_with_my( new_dict_ ) , f)

最佳答案

附加到 pickle 文件是没有意义的。 pickle 格式是一种二进制结构,如果您附加到包含一种结构的文件,最好的情况是忽略其余部分,最坏的情况是您会破坏现有数据。

(顺便说一句,追加到 json 文件没有什么意义:在这两种情况下,新数据都必须插入到现有结构中,而不是追加)

你可以:

  • 复习字典
  • 用新值更新它(或者反过来,它有不同的效果取决于是否有一些共享键)
  • 将其转储回磁盘

像这样:

with open(filename_directory, 'wb') as f:
    pickle.dump({"a" : 1, "b":2 }, f)

new_dict_ = {i:i for i in range(10)}

with open(filename_directory, 'rb') as f:
    new_dict_.update(pickle.load(f))

with open(filename_directory, 'wb') as f:
    pickle.dump( new_dict_ , f)

读取/更新/转储新 key 优先,先读取,更新和转储:

with open(filename_directory, 'rb') as f:
    new_dict_ = update(pickle.load(f))
for i in range(10):
    new_dict_ [i] = i

with open(filename_directory, 'wb') as f:
    pickle.dump( new_dict_ , f)

请注意,如果您打算在字典中序列化基本类型,则使用 json 格式可能会更好。至少转储格式是可读的,甚至可以手动更新,并且如上所述,如果您尝试附加到 json 文件,它也不起作用,即使它是一个文本文件。至少会有 ]} 最终字符需要移动、添加逗号等...算了吧)。

关于python - 在 pickle 文件中添加新 key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51101479/

相关文章:

python - 无法 pickle <class '__main__.JobQueueManager' >

python - 值错误: The shape of all parameters

python - 如何从串口读取数据? Python

嵌套字典中的 C# 值总和,其中值是类 Dictionary<string, Dictionary<Int16, CommonData>>

python - 如何保存 torchtext 数据集?

python - 多进程初始化程序和 pickle

python - 将 HEX 值发送到 Raspberry PI B+ 上的 SPI

python - 使用 asyncio 和 contextvars 在 python 中的两个异步程序之间共享状态

python - 具有许多将返回相同值的键的 2d 字典

python - 来自键路径的嵌套字典值