什么';Python字典和JSON之间的区别是什么?

什么';Python字典和JSON之间的区别是什么?,python,json,Python,Json,将大型嵌套Python字典转换为JSON以便在小型库中使用(即不通过web)有什么好处吗 我正在解析配置文件并存储不同的数据位,以便稍后检索和输出。目前,所有信息都存储在嵌套的dict中,其中还包含列表。这并不是说这个方法一定有问题,我只是想知道使用标准数据格式是否有益,嵌套的dict看起来非常像JSON。这是苹果和桔子的比较:JSON是一种数据格式(字符串),Python字典是一种数据结构(内存对象) 如果需要在不同(甚至可能是非Python)进程之间交换数据,那么可以使用JSON格式序列化P

将大型嵌套Python字典转换为JSON以便在小型库中使用(即不通过web)有什么好处吗


我正在解析配置文件并存储不同的数据位,以便稍后检索和输出。目前,所有信息都存储在嵌套的dict中,其中还包含列表。这并不是说这个方法一定有问题,我只是想知道使用标准数据格式是否有益,嵌套的dict看起来非常像JSON。

这是苹果和桔子的比较:JSON是一种数据格式(字符串),Python字典是一种数据结构(内存对象)

如果需要在不同(甚至可能是非Python)进程之间交换数据,那么可以使用JSON格式序列化Python字典

字典的文本表示形式类似于(但不是)json格式:

>>> print(dict(zip('abc', range(3))))
{'a': 0, 'b': 1, 'c': 2}
对象的文本表示(字符串)不是对象本身(即使字符串对象及其文本表示也是不同的东西,例如,
“\n”
是一个换行符,但其文本表示显然是几个字符)。

是的,这有好处, 使用json,您可以处理数据并使其看起来简单, 而不是不必要地用括号将数据复杂化

你说得对,python字典不好看

在我的python项目中,我也在使用而不是字典

另外,如果您担心性能,那么没有区别。您可以使用json


因此,我的代码在使用json时看起来很干净

如果您在python中使用python dict,那么如果您不需要,将其转换为另一种语言的格式似乎是不必要的。您的意思是要将json存储在一些文件中,还是只将dict作为json在一个程序中传递?没有理由这样做。json是数据交换nge格式。当您需要在外部提供数据时,可以转换为nge格式。在内部使用它就像在字符串中存储数字一样有意义。是的,这是我想的,在单个程序中似乎是不必要的步骤。我想我不确定您会在什么时候选择将数据转换为JSON,但是将其理解为一种交换格式会使这一点更清楚。谢谢。J.F.Sebastian说的。因此,您可能希望使用JSON将该dict存储到磁盘,以便在随后的程序运行中读取该dict,从而其他程序可以读取该数据。但是,您可以使用Python pickle模块来持久化类似的数据,pickle可以处理精简的数据JSON不能,OTOH,pickle是特定于Python的&不是人类可读的。对象本身的表示与对象本身,这让我困惑,JSON与Python嵌套dict有什么不同。这很有意义,谢谢!@RMPhoenix:为了确保您理解这一区别,请尝试找出
len(JSON.loads(“\\\\\”)
?(如果你不能立即得到答案,请一步一步地写下解决方案)。接受挑战。好吧,我对JSON没有太多经验,所以我不完全理解这个问题的答案。这是将JSON转换为Python。答案是
1
,因为这归结为一个
`。前面的
`可以逃脱它。前面的
“\\”
似乎是特定于json的,与十六进制有关?因此,虽然作为文本表示有6个字符,但最终计算结果仅为1,我想其他字符就像上下文管理器,编码/解码信号表示编码含义。@RMPhoenix:这里的关键词是“双转义”:反斜杠在Python字符串文本和JSON文本中都很特殊:它可能会更改以下字符的解释方式,例如,Python源代码中的“\t”
是一个由双引号包围的选项卡(单个字符),但“\\t”
是两个字符(反斜杠+
t
)被引号包围,但反斜杠在JSON中也很特殊,因此
JSON.loads(“\\t”)=='\t'
即,我们从Python源代码(文本)中的
\\t
开始,然后JSON解析器会看到
\t
(两个字符)这最终会产生一个制表符。为什么说是JSON对象?而不是JSON格式?这是迄今为止我所读到的Python中最不符合Python的编码实践。这个答案事实上是不正确的。JSON通过括号支持数组。JSON和Python dict之间存在差异。它还使用了类似“sucks”这样的无用语言并且在不支持声明的情况下,做出主观陈述,比如“让代码看起来脏兮兮”。