如何访问带有冒号的字典键

3 投票
4 回答
3965 浏览
提问于 2025-04-18 09:32

我有一个字典(我想是JSON格式),

作为回应,我得到了下面的值...

{
    "servers": [
        {
            "status": "ACTIVE",
            "updated": "2014-06-12T01:13:47Z",
            "hostId": "e60cf1024aecbddd13805ea01d4702ccfcf2c2de0f67a205b143ca07",
            "OS-EXT-SRV-ATTR:host": "ubi1",


        }
    ]
}

在这个里面,我该怎么访问

OS-EXT-SRV-ATTR:host

这个值,但我得到的是 statusupdated 这两个键。

我该怎么做呢?

谢谢。

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

这里有几个步骤:

  1. 首先,你提到的 JSON,我想是指这个,所以首先要弄清楚它是什么。
  2. 如果确实是JSON格式的话,可以使用 json.loads(<你的json字符串>) 这个方法,它会把JSON转换成Python对象(也就是字典)。
  3. 然后你可以直接调用 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

撰写回答