Python dict
объекты не упорядочены до Python 3.7
Вы можете использовать OrderedDict
:
from collections import OrderedDict
import json
location_details = OrderedDict({
"proxy_pass": "https://{{application_destination}}/abc/service$is_args$args",
"host": "{{application_destination}}",
})
if "proxy_pass" in location_details:
proxy_pass = location_details.pop('proxy_pass')
location_details["set"] = "$backend " + proxy_pass
location_details["proxy_pass"] = "$backend"
print(json.dumps(location_details, indent=4))
Выход
{
"host": "{{application_destination}}",
"set": "$backend https://{{application_destination}}/abc/service$is_args$args",
"proxy_pass": "$backend"
}
РЕДАКТИРОВАТЬ
Для получения необходимого заказа
set
proxy_pass
host
Вы можете использовать OrderedDict.move_to_end
, чтобы переместить клавишу host
в конец OrderedDict
:
from collections import OrderedDict
import json
location_details = OrderedDict({
"proxy_pass": "https://{{application_destination}}/abc/service$is_args$args",
"host": "{{application_destination}}",
})
if "proxy_pass" in location_details:
proxy_pass = location_details.pop('proxy_pass')
location_details["set"] = "$backend " + proxy_pass
location_details["proxy_pass"] = "$backend"
location_details.move_to_end('host')
print(json.dumps(location_details, indent=4))
Выход
{
"set": "$backend https://{{application_destination}}/abc/service$is_args$args",
"proxy_pass": "$backend",
"host": "{{application_destination}}"
}
Примечание
Вы также можете использовать location_details.move_to_end(key, last=False)
для перемещения key
к началу словаря