在下面的示例中,我试图将一个键的值替换为另一个键的值;但是我尝试了多种方法,但它似乎不起作用。
以下是我的代码
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
任何帮助都非常感谢。
发布于 2016-08-24 19:47:22
下面是一个非通用的解决方案,适用于您的问题:
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")https://stackoverflow.com/questions/39131023
复制相似问题