Member 12743673 Ответов: 1

Как изменить порядок динамических строковых ключей для словаря, чтобы сохранить его в JSON


Как сортировать динамические обновленные данные словаря каждый раз, когда в словаре обновляются новые ключи? Это дает мне случайный порядок для ключей всякий раз, когда я пытаюсь распечатать словарь после обновления.

mydict ={"item_0": "apples"}
print(mydict)
mydict.update(item_1="banana")
print(mydict)
mydict.update(item_2="oranges")
print(mydict)
mydict.update(item_3="peaches")
print(mydict)
mydict.update(item_4="tangerines")
print(mydict)

Actual Results
{'item_0': 'apples'}
{'item_0': 'apples', 'item_1': 'banana'}
{'item_2': 'oranges', 'item_0': 'apples', 'item_1': 'banana'}
{'item_2': 'oranges', 'item_3': 'peaches', 'item_0': 'apples', 'item_1': 
'banana'}
{'item_4': 'tangerines', 'item_2': 'oranges', 'item_3': 'peaches', 
'item_0': 'apples', 'item_1': 'banana'}

Expected Results
{'item_0': 'apples'}
{'item_0': 'apples', 'item_1': 'banana'}
{'item_0': 'apples', 'item_1': 'banana', 'item_2': 'oranges'}
{'item_0': 'apples', 'item_1': 'banana', 'item_2': 'oranges', 'item_3': 
'peaches'}
{'item_0': 'apples', 'item_1': 'banana', 'item_2': 'oranges', 'item_3': 
'peaches', 'item_4': 'tangerines'}


Что я уже пробовал:

Использование функции сортировки, похоже, не работает при динамической сортировке данных или, по крайней мере, не возвращает словарь, а вместо этого возвращает список кортежей. Я продолжаю получать случайный порядок всякий раз, когда новые ключи добавляются в словарь, и мне нужно сортировать их и обновлять в данных в формате JSON.

honey the codewitch

Предположительно, у вас есть причина, по которой вы хотели бы сохранить порядок, но спецификация JSON не гарантирует порядок именованных элементов - вот для чего нужен XML. В основном то, что вы хотите, это взломать протокол JSON, чтобы удовлетворить ваши требования. Не то чтобы этого нельзя было сделать, но знайте, что то, что вы хотите сделать, - это халтура.

1 Ответов

Рейтинг:
4

Richard MacCutchan

Я только что запустил ваш код и получил следующий результат:

{'item_0': 'apples'}
{'item_0': 'apples', 'item_1': 'banana'}
{'item_0': 'apples', 'item_1': 'banana', 'item_2': 'oranges'}
{'item_0': 'apples', 'item_1': 'banana', 'item_2': 'oranges', 'item_3': 'peaches'}
{'item_0': 'apples', 'item_1': 'banana', 'item_2': 'oranges', 'item_3': 'peaches', 'item_4': 'tangerines'}

Я могу только предположить, что в вашем коде есть что-то, что вы нам не показали. Хотя замечу из документации:
Цитата:
Лучше всего думать о словаре как о неупорядоченный набор пар ключ: значение


Смотреть также: python sort dictionary - поиск в Google[^].