是否可以使用if语句更改json字典有效内容? 我有4种类型,说ID为1,2,3,4所以我需要某种选择切换代码。
原始代码是:
payload = {
"added": [
{
"assingedTargets": [
{
"sequencing": 1,
"name": assigned_target_name,
"id": assigned_target_id
}
],
"type": {
"protocol": {
"isDefaultProtocol": True,
"name": "tcp",
"id": 3,
"label": "tcp"
},
"name": target_type,
"id": int(1)
},
"name":"DDITargetGroup5"
}
]
}
我想做的是:
payload = {
"added": [
{
"assingedTargets": [
{
"sequencing": 1,
"name": assigned_target_name,
"id": assigned_target_id
}
],
"type": {
"protocol": {
"isDefaultProtocol": True,
"name": "tcp",
"id": 3,
"label": "tcp"
},
if target_type: == "direct dial"
"name": target_type,
"id": int(1)
elif target_type == "private Wire"
"name": target_type
"id": int(2)
},
"name":"DDITargetGroup5"
}
]
}
我收到错误:
if target_type: == "direct dial"
^
SyntaxError: invalid syntax
Process finished with exit code 1
答案 0 :(得分:0)
您不能将条件语句放入json对象中。相反,您应该创建一个变量来存储id值(id_val)并在使对象根据target_type的值设置其值之前使用条件。然后将字典设置为具有这些变量的值(见下文)。
id_val = 0
if target_type == 'direct dial':
id_val = 1
elif target_type == 'private Wire':
id_val = 2
payload = { "added": [ { "assingedTargets": [ { "sequencing": 1, "name": assigned_target_name, "id": assigned_target_id } ], "type": { "protocol": { "isDefaultProtocol": True, "name": "tcp", "id": 3, "label": "tcp" }, "name": target_type, "id": id_val }, "name":"DDITargetGroup5" } ] }
答案 1 :(得分:0)
如果只有两个选项,您可以使用三元运算符
{
...
"name": target_type,
"id": 1 if target_type == 'direct dial' else 2,
...
}
但是,它带来了可读性的代价,因此您应该考虑将条件语句与字典分开是否更好。