如何访问带有冒号的字典键
我有一个字典(我想是JSON格式),
作为回应,我得到了下面的值...
{
"servers": [
{
"status": "ACTIVE",
"updated": "2014-06-12T01:13:47Z",
"hostId": "e60cf1024aecbddd13805ea01d4702ccfcf2c2de0f67a205b143ca07",
"OS-EXT-SRV-ATTR:host": "ubi1",
}
]
}
在这个里面,我该怎么访问
OS-EXT-SRV-ATTR:host
这个值,但我得到的是 status
和 updated
这两个键。
我该怎么做呢?
谢谢。
4 个回答
0
这段代码会输出一个值
data = {
"servers": [
{
"status": "ACTIVE",
"updated": "2014-06-12T01:13:47Z",
"hostId": "e60cf1024aecbddd13805ea01d4702ccfcf2c2de0f67a205b143ca07",
"OS-EXT-SRV-ATTR:host": "ubi1",
}
]
}
host = data["servers"][0]["OS-EXT-SRV-ATTR:host"]
print host # for python 3, you use print(host) instead
>>> ubi1
要获取这个值,首先你需要用 data["servers"]
来访问数据中的“servers”部分。接着,因为这个列表里只有一个元素,所以你用 [0]
来获取这个字典。最后,你可以用 ["OS-EXT-SRV-ATTR:host"]
来获取“OS-EXT-SRV-ATTR:host”的值。
0
这个代码的意思是,从一个叫做 variable_that_holds_dictionary
的变量中,获取一个字典(类似于一个装着键值对的盒子)。
具体来说,它在这个字典里找一个叫做 servers
的键,然后取出这个键对应的值。这个值本身也是一个列表,列表里的第一个元素是 [0]
,接着从这个元素中再找一个叫做 OS-EXT-SRV-ATTR:host
的键,最后获取这个键对应的值。
简单来说,就是在一个复杂的数据结构中,逐层提取出我们想要的信息。
0
这里有几个步骤:
- 首先,你提到的 JSON,我想是指这个,所以首先要弄清楚它是什么。
- 如果确实是JSON格式的话,可以使用
json.loads(<你的json字符串>)
这个方法,它会把JSON转换成Python对象(也就是字典)。 - 然后你可以直接调用
data["servers"][0]["OS-EXT-SRV-ATTR:host"]
来获取对应的值。
如果它是字典格式的话,你也可以直接用 data["servers"][0]["OS-EXT-SRV-ATTR:host"]
来获取值。
1
你的字典里有一个键叫“servers”,它的值是一个字典列表。要访问这些内部的字典,你可以用循环或者通过索引来获取。
data = {
"servers":
[
{
"status": "ACTIVE",
"updated": "2014-06-12T01:13:47Z",
"hostId": "e60cf1024aecbddd13805ea01d4702ccfcf2c2de0f67a205b143ca07",
"OS-EXT-SRV-ATTR:host": "ubi1",
},
],
}
循环访问的例子
for server in data['servers']:
print(server['OS-EXT-SRV-ATTR:host'])
>>>> ubi1
或者直接通过索引访问
print(data['servers'][0]['OS-EXT-SRV-ATTR:host'])
>>>> ubi1