Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python3:json可以解码为元组吗?_Python_Json - Fatal编程技术网

python3:json可以解码为元组吗?

python3:json可以解码为元组吗?,python,json,Python,Json,如何直接从json.loads()将json字符串解码为(层次深度)元组 我知道json编码将元组和列表保存为“数组”,但实际上,我的不可变“t”变量非常大且是只读的,因此元组样式(据我所知)在内存中比列表样式更快、更紧凑 想法?谢谢 JSON是JavaScript对象表示法的缩写形式,在JavaScript中有一种称为数组的数据结构,在定义数组时,我们使用括号[]而不是括号()类似于Python中的元组 因此,无论何时尝试将元组转换为字符串json.dumps(),它都会在内部更改为数组形式,

如何直接从json.loads()将json字符串解码为(层次深度)元组

我知道json编码将元组和列表保存为“数组”,但实际上,我的不可变“t”变量非常大且是只读的,因此元组样式(据我所知)在内存中比列表样式更快、更紧凑


想法?谢谢

JSONJavaScript对象表示法的缩写形式,在JavaScript中有一种称为数组的数据结构,在定义数组时,我们使用括号
[
]
而不是括号
类似于Python中的元组

因此,无论何时尝试将元组转换为字符串
json.dumps()
,它都会在内部更改为数组形式,如JavaScript中的格式,并在Python中列出,并在其周围加上括号
[
]

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]]]
如果您的意图是将元组转换为字符串,并再次从该字符串表示转换为真正的Python对象(这里是元组),那么解决方案如下

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的创建,还是仅仅控制加载部分?是的,我可以控制编码和解码你确定你需要json吗?你不能用pickle来保存python变量类型吗?不幸的是,json是一个约束,因为其他人应该可以读取数据。哇!我希望eval()足够高效,这是一个很好的解决方案!:-)确保您了解eval()的风险-阅读docsYeah,没错,它也计算字符串表达式。除此之外,另一个也是。最后,通过计算字符串来提供Python对象。非常感谢。
j2 = str(t) 
x2 = eval(j2) 
print(j2) # (((9, 1, 4),), (), ((14, 5, 10),), ((0, 4, 5),))
print(x2) # (((9, 1, 4),), (), ((14, 5, 10),), ((0, 4, 5),))