首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python,用键和值对替换值。

python,用键和值对替换值。
EN

Stack Overflow用户
提问于 2016-08-24 18:53:44
回答 1查看 493关注 0票数 0

在下面的示例中,我试图将一个键的值替换为另一个键的值;但是我尝试了多种方法,但它似乎不起作用。

以下是我的代码

代码语言:javascript
复制
d = {
  "name" : "ABC",
  "type" : "Service",
  "clusterRef" : {
    "clusterName" : "ABCSTUFF"
  },
  "serviceState" : "STARTED",
  "healthChecks" : [ {
    "name" : "STORAGE",
    "summary" : "GOOD"
  }, {
    "name" : "CPU UTILIZATION",
    "summary" : "GOOD"
  } ],
  "maintenanceMode" : "false"
}


########################
## Get Key Value

def get_key_values(d, key):
  for k, v in d.items():
    if k == "name":
        k = (key + "." + v)
    else:
        k = (key + "." + k)
    if isinstance(v, dict):
        get_key_values(v, k)
    elif isinstance(v, list):
        for i in v:
            get_key_values(i, k)
    else:
        print ("{0} : {1}".format(k, v))


get_key_values(d, "TTS")

结果如下

TTS.serviceState : STARTED TTS.type : Service TTS.ABC : ABC TTS.clusterRef.clusterName : ABCSTUFF TTS.healthChecks.summary : GOOD <<<删除这一行,并将" GOOD“替换为" TTS.healthChecks.STORAGE”TTS.healthChecks.STORAGE:存储TTS.healthChecks.summary :Good <<<删除该行,并将"Good“替换为"TTS.healthChecks.CPU利用率”TTS.healthChecks.CPU利用率的值: CPU利用率TTS.maintenanceMode : false

但我希望结果是

TTS.serviceState : STARTED TTS.type : TTS.ABC : ABC TTS.clusterRef.clusterName : ABCSTUFF TTS.healthChecks.STORAGE : GOOD <<< TTS.healthChecks.CPU利用率: GOOD <<< TTS.maintenanceMode : false

任何帮助都非常感谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-24 19:47:22

下面是一个非通用的解决方案,适用于您的问题:

代码语言:javascript
复制
d = {
    "name": "ABC",
    "type": "Service",
    "clusterRef": {
        "clusterName": "ABCSTUFF"
    },
    "serviceState": "STARTED",
    "healthChecks": [{
        "name": "STORAGE",
        "summary": "GOOD"
    }, {
        "name": "CPU UTILIZATION",
        "summary": "GOOD"
    }],
    "maintenanceMode": "false"
}


########################
# Get Key Value

def get_key_values(d, key):
    for k, v in d.items():
        if k == "name":
            k = (key + "." + v)
        else:
            k = (key + "." + k)

        if isinstance(v, dict):
            get_key_values(v, k)
        elif isinstance(v, list):
            for i in v:
                tok1 = k + "." + i.get("name")
                tok2 = i.get("summary")
                print("{0} : {1}".format(tok1, tok2))
        else:
            print("{0} : {1}".format(k, v))

get_key_values(d, "TTS")
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39131023

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档