Python封送为两级字典提供意外结果

2024-09-27 23:20:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我在OS X上使用了Python2.7和marshal 2,并尝试序列化一个两级字典类型:

{(1, 3): {(0, 1): 145, (1, 2): 101}}

我有一个对象d从一个用于存储数据的自定义类实例化,该类包含一个方法getRawData(),用于以上述格式返回数据。当我第一次用

^{pr2}$

然后用

with open('counts','rb') as f:
    print(marshal.load(f))

奇怪的事情发生了。打印格式如下:

{(1, 3): {('\x00', '\x01'): 145, ('\x01', '\x02'): 101}}

更令人费解的是,如果我创建要手动序列化的字典

 e = {(1, 3): {(0, 1): 145, (1, 2): 101}}

这给了

 e == d.getRawData()
 True

然后序列化并反序列化e打印格式正确。你知道怎么回事吗?在


Tags: 数据对象实例方法类型字典序列化os

热门问题