我正在尝试一个循环,稍后我将创建该循环,以给出Api-Post请求的名称(单个((此处用于打印测试(,并在循环的每一圈中更改变量的Vaule。现在我在异常中运行:KeyError 0。
我的问题是,有没有一个变量可以用于[0]
(Key_name(
有人能帮忙吗?
file.json:
(缩短,实际文件更长(
{ "_meta": {
"Example1": {
"00000001": {
"name": "Test-01",
},
"00000002": {
"name": "Test-02"
},
},
}
import json
data = json.load(open("file.json"))
name = data["_meta"]["Example1"][0]["name"]
print(f"Name: {name}")
异常:KeyError 0
编辑
"Example1": {
"00000001": {
"name": "Test-01",
},
"00000002": {
"name": "Test-02"
"uuid": "Test-uuid"
"config": {
"ipAdresse": "Test-Ip"
},
},
},
}
问题是[0]
,Example1
元素的值不是列表而是dict。请尝试使用dict.items()
for key, value in data["_meta"]["Example1"].items():
print(f"Key: {key}nName: {value['name']}")
编辑以获取以下注释:
因此,您需要测试dict项中是否存在密钥,以避免key not found
错误。您只需检查if keyname in dict
即可完成此操作
请参阅下面的扩展示例。。。
data = {
"_meta":{
"Example1":{
"00000001":{
"name":"Test-01"
},
"00000002":{
"name":"Test-02",
"uuid":"Test-uuid",
"config":{
"ipAdresse":"Test-Ip"
}
}
}
}
}
for key, value in data["_meta"]["Example1"].items():
print(f"Key: {key}n Name: {value['name']}")
# check if the key exists. fe 00000001 does not have the uuid nor config key
if "uuid" in value:
print(f" uuid: {value['uuid']}")
if "config" in value and "ipAdresse" in value["config"]:
print(f" ipAdresse: {value['config']['ipAdresse']}")
输出
Key: 00000001
Name: Test-01
Key: 00000002
Name: Test-02
uuid: Test-uuid
ipAdresse: Test-Ip