幾個小時以來,我一直在尋找解決問題的方法。
您知道實作以下目標的方法或演算法嗎?
#Input
text1 = "network.routes.vlan[0].address"
val1 = "value1"
text2 = "network.routes.vlan[1].address"
val2 = "value2"
text3 = "network.routes.vlan[2].address"
val3 = "value3"
text3 = "network.interface.name"
val3 = "name_interface"
merge_variables_to_unique_object()
#Output
[{
network: {
routes : {
vlan: [
{
address: value1
},
{
address: value2
},
{
address: value3
}
]
},
interface: {
name: name_interface
}
}
}]
非常感謝您!
uj5u.com熱心網友回復:
為此,我將創建一個包含所有值的陣列
values = [[text1, val1], [text2, val2], [text3, val3], [name, name_interface]]
# name and name_interface are the last two values
然后,我會讓該函式獲取一個值串列并創建一個基本字典以將值添加到其中。
def merge_variables_to_unique_object(values: list):
base_json = {
"network": {
"routes": {
"vlan": [
]
},
"interface": {
}
}
}
之后,它只是一個簡單的 for 回圈,直到values陣列的長度。在陣列內部,您檢查您是否位于陣列的最后一個元素。如果你不是在最后,你將值添加到陣列中(記住那vlan是一個字典)
base_json["network"]["routes"]["vlan"].append({values[i][0]: values[i][1]})
如果您位于陣列的最后一個元素,則將值添加到介面:
base_json["network"]["interface"][values[i][0]] = values[i][1]
for 回圈如下所示:
for i in range(len(values)):
if i < len(values) - 1:
base_json["network"]["routes"]["vlan"].append({values[i][0]: values[i][1]})
else:
base_json["network"]["interface"][values[i][0]] = values[i][1]
之后,您將回傳,base_json因為它在 for 回圈內被更改。
uj5u.com熱心網友回復:
如果您想要這種語法格式的所有內容,您可以簡單地將其寫入檔案或字串。無論哪種方式,它都會是這樣的。這是手動創建您想要的語法,您可以將其寫入檔案以強制通過 .json。
input1 = text1.split(".")
input2 = text2.split(".")
等等
str1="[{\n\tinput1[1]: {\n\t\tinput1[2] : {\n\t\t\tinput1[3]"
以這種方式
\t像代碼中的縮進這樣的制表符
\n在字串中被解釋為下一行。
這有幫助嗎?
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/405741.html
標籤:
上一篇:運算子不回傳預期結果
