【发布时间】:2018-12-16 16:22:58
【问题描述】:
import json
t = (((9, 1, 4),), (), ((14, 5, 10),), ((0, 4, 5),))
j = json.dumps(t)
x = json.loads(j)
print(t) # (((9, 1, 4),), (), ((14, 5, 10),), ((0, 4, 5),))
print(x) # [[[9, 1, 4]], [], [[14, 5, 10]], [[0, 4, 5]]]
如何直接从 json.loads() 将 json 字符串解码为(层次结构深的)元组?
我知道 json 编码将元组和列表都保存为“数组”,但实际上,我的不可变“t”变量非常大并且是只读的,因此元组样式(据我所知)更快更紧凑在内存中比在列表样式中。
想法?谢谢!
【问题讨论】:
-
你控制 json 的创建,还是只控制加载部分?
-
是的,我可以控制编码和解码
-
你确定你需要json吗?你不能用pickle来保留python变量类型吗?
-
不幸的是,json 是一个约束,因为其他人应该可以读取数据。