当前位置: 首页 > 面试题库 >

如何将Python字典序列化为字符串,然后再返回字典?

焦学海
2023-03-14
问题内容

如何将Python字典序列化为字符串,然后再返回字典?该词典中将包含列表和其他词典。


问题答案:

这取决于您要使用它的目的。如果只是尝试保存它,则应使用pickle(或者,如果使用CPython
2.x,cPickle则速度更快)。

>>> import pickle
>>> pickle.dumps({'foo': 'bar'})
b'\x80\x03}q\x00X\x03\x00\x00\x00fooq\x01X\x03\x00\x00\x00barq\x02s.'
>>> pickle.loads(_)
{'foo': 'bar'}

如果您希望它可读,可以使用json

>>> import json
>>> json.dumps({'foo': 'bar'})
'{"foo": "bar"}'
>>> json.loads(_)
{'foo': 'bar'}

json但是,它支持的功能非常有限,虽然pickle可以用于任意对象(如果它不能自动运行,则该类可以定义__getstate__以精确指定应如何对其进行腌制)。

>>> pickle.dumps(object())
b'\x80\x03cbuiltins\nobject\nq\x00)\x81q\x01.'
>>> json.dumps(object())
Traceback (most recent call last):
  ...
TypeError: <object object at 0x7fa0348230c0> is not JSON serializable


 类似资料:
  • 问题内容: 我需要在两台机器之间发送一些变量的值,并打算使用套接字来实现。我使用md5哈希算法作为发送数据的校验和,以确保正确传输数据。要执行md5哈希算法,我必须将数据转换为字节。我想同时传递变量的名称及其值。因为我有很多变量,所以我使用字典。 所以我想将类似的东西转换为字节? 换句话说,我有一个字典,里面有很多不同的数据类型,包括列表,列表又有多种不同的数据类型,我想将其转换为字节。然后在接收

  • 问题内容: 我正在编写一个将数据存储在字典对象中的程序,但是该数据需要在程序执行过程中的某个时候保存,并在再次运行该程序时重新加载到字典对象中。我如何将字典对象转换为可以写入文件并再加载回字典对象的字符串?希望这将支持包含词典的词典。 问题答案: json模块是一个很好的解决方案。与pickle相比,它的优势在于它仅生成纯文本输出,并且是跨平台和跨版本的。

  • 问题内容: 我有以下字符串,这是一个字符串化的Python字典: 如何从上述字符串中获取Python字典? 问题答案: 好吧,你可以做 但是,如果字符串包含用户输入,则是个坏主意,因为表达式中可能包含一些随机的恶意函数。 因此,更安全的选择可能是: 来自http://docs.python.org/library/ast.html#ast.literal_eval: 提供的字符串或节点只能由以下P

  • 我正在使用Schembuf在带有套接字的计算机之间更改数据。要传输数据,我使用以下内容: 然而,我注意到Protobuf无法读取任何非int类型的接收数据(它将其分配给0)。果不其然,如果我不使用套接字,但试图用相同的代码片段返回消息,则会发生相同的情况: 我还指出: 那么,为什么我不能正确地将数据转换回字符串呢?如果这是一个参考问题,为什么protobuf不能读取字符数组数据或从字符数组转换的字

  • 问题内容: 关闭。 此问题不符合堆栈溢出准则。它当前不接受答案。 想改善这个问题吗? 更新问题,使其成为Stack Overflow的主题。 6年前关闭。 改善这个问题 有一个名为“ simplejson”的简单JSON序列化模块,可轻松将Python对象序列化为JSON。 我正在寻找可以序列化为XML的类似模块。 问题答案: http://code.activestate.com/recipes

  • 问题内容: 是否可以将字符串转换为字节数组,然后在Java或Android中将其转换回原始字符串? 我的目标是将一些字符串发送到微控制器(Arduino)并将其存储到EEPROM(仅1 KB)中。我尝试使用MD5哈希,但它似乎只是一种单向加密。我该怎么办? 问题答案: 我建议使用字符串的成员,但 使用显式编码 : 通过使用一种显式编码(以及一种支持所有Unicode的编码),您可以避免仅调用等问题