Я сделал следующий дикт:
logs = {
'3h forecast': {
'Ort': '',
'Datum und Uhrzeit': '',
'Temperatur': '',
'Temperatur_Min': '',
'Temperatur_Max': ''},
'6h forecast': {
'Ort': '',
'Datum und Uhrzeit': '',
'Temperatur': '',
'Temperatur_Min': '',
'Temperatur_Max': ''},
'9h forecast': {
'Ort': '',
'Datum und Uhrzeit': '',
'Temperatur': '',
'Temperatur_Min': '',
'Temperatur_Max': ''},
'12h forecast': {
'Ort': '',
'Datum und Uhrzeit': '',
'Temperatur': '',
'Temperatur_Min': '',
'Temperatur_Max': ''}
}
И распечатайте его со следующей строкой:
print(json.dumps(logs, sort_keys=True, indent=4))
И результат в консоли такой:
{ "12-часовой прогноз": { "Datum und Uhrzeit": "", "Орт": "", "Температура": "", "Температура_Макс": "", "Температура_Мин": "" }, "прогноз на 3 часа": { "Datum und Uhrzeit": "", "Орт": "", "Температура": "", "Температура_Макс": "", "Температура_Мин": "" }, "6-часовой прогноз": { "Datum und Uhrzeit": "", "Орт": "", "Температура": "", "Температура_Макс": "", "Температура_Мин": "" }, «Прогноз на 9 часов»: { "Datum und Uhrzeit": "", "Орт": "", "Температура": "", "Температура_Макс": "", "Температура_Мин": "" } }
Итак... Почему 12-часовой прогноз сейчас на первом месте, а не как логи dict на последнем месте?
Что я делаю не так? :)
Ваши собственные слова, где код говорит print(json.dumps(logs, sort_keys=True, indent=4)), что, в частности, вы ожидаете, что будет означать часть sort_keys=True?
Подсказка: '12' < '3' == True
@ 0x5453 Это неверно.
Просто удалите sort_keys=True
print(json.dumps(logs, indent=4))
#выход
{
"3h forecast": {
"Ort": "",
"Datum und Uhrzeit": "",
"Temperatur": "",
"Temperatur_Min": "",
"Temperatur_Max": ""
},
"6h forecast": {
"Ort": "",
"Datum und Uhrzeit": "",
"Temperatur": "",
"Temperatur_Min": "",
"Temperatur_Max": ""
},
"9h forecast": {
"Ort": "",
"Datum und Uhrzeit": "",
"Temperatur": "",
"Temperatur_Min": "",
"Temperatur_Max": ""
},
"12h forecast": {
"Ort": "",
"Datum und Uhrzeit": "",
"Temperatur": "",
"Temperatur_Min": "",
"Temperatur_Max": ""
}
}
О, это так просто - спасибо :)
Здесь произошло то, что вы сортировали ключи на основе строк. Итак, '1' из '12' сравнили с '3' из другого прогноза. А поскольку '1' ниже, чем '3' в таблице ASCII, он помещается раньше в списке.
Вы можете проверить это поведение самостоятельно, сравнив
'9' < '10'
К
9 < 10
Чтобы предотвратить это, в этом конкретном случае вы можете удалить атрибут sort_keys.
Я думаю, вы хотите использовать sort_keys=False или просто удалить параметр sort_keys