需要解释Python中json和dict之间的区别。

16

我很好奇深入了解Python中的JSON和Dict。

我从服务器收到的JSON响应如下:

`{"city":"Mississauga","country":"Canada","countryCode":"CA"}`

我想将其作为字典来使用。 为此,我使用.json()函数。 为什么可以通过res.json()['city']获取数据,但无法使用req.json().city


6
.json()返回一个字典。它不是一个特殊的对象。如果一个字典让.city起作用,那么对于数字键会发生什么呢?当你说“dictionary.copy”时,是在询问字典的“copy”方法还是“dictionary ['copy']”? - zondo
7
Python不是Javascript。在Javascript中,thing.x被定义为thing["x"]的简写;而在Python中,它们是完全不同的东西。 - user2357112
4个回答

14
在Python中,不能使用my_dict.key语法来访问字典值。这个语法是保留给dict类的属性使用的,比如dict.getdict.update。只有通过my_dict[key]语法才能访问字典值。

1
谢谢,现在更清楚了。我之前误解了Python中的字典数据类型是对象的子类型,并认为可以以同样的方式使用它。 - user1542557

3

我不确定是否需要我的帮助,但我还是会尝试。

注意:一切基于我的当前知识,如果有错误请谅解并纠正我以便社区不断发展

我的回答实际上包含了它们如何工作以及为什么的基础知识。所以如果您需要的话,在此介绍:

首先,有两种类型的JSON:

  1. JSON数据
  2. JSON字符串

我们知道JSON数据与Python中的字典非常相似。这意味着它们基于哈希映射(hash maps)工作。 但是在将json数据通过网络传输到其他地方之前,我们要先将其转换为字符串。

这样看起来就像这样:json_data = {"data":"This will original"}

转换后会变成这样:'{"data":"This will original"}'

您会注意到,json_data已经被转换为字符串,并且现在被写在引号内。您可以通过 type(json_data) 在Python中检查数据类型。 之所以这样做,是因为字符串的成本比实际对象的成本要低得多,而且这样做更容易。所以当这些数据传输到其他语言(例如Python)时,它们将接收到JSON字符串。现在,他们必须解析这些对象才能使用其中的数据,否则它们只是简单的字符串。 所以现在您需要将其转换回JSON数据。在Python中,JSON数据或JavaScript对象与字典等效。这就是为什么我们将字符串转换为字典。 其他语言可能具有不同名称的数据结构类型,然后将字符串转换为这些类型的数据结构。 在Python中,要能够从字符串转换为JSON和JSON转换为字符串。该类必须具有JSON序列化程序以了解如何进行转换。

希望这有所帮助,即使只有一点。如果有任何疑问,我很乐意回答。


2

JSON是JavaScript对象表示法的缩写,它是一种表示数据的规则,仅仅是一种格式 - 定义了如何以文本格式表示数据。
Python字典是Python中表示哈希表数据结构的类,它恰好看起来像JSON;但它比JSON更加强大。
注意,它们的结构基本相同。
您可以在这里了解更多信息。


-1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接