Как отсортировать json в операторе дампа?

#python #json #sorting #date #dump

#python #json #сортировка #Дата #дамп

Вопрос:

Я прочитал эту страницу в W3Schools и заметил, что она показывает, что вы можете сбрасывать и сортировать по алфавиту, можно ли сортировать по времени?

Мой оператор дампа:

 with open("./warns.json","w") as f:
  json.dump(warns,f)
 

Как мне его сбросить и отсортировать по дате?

Комментарии:

1. json.dump(warns, f, sort_keys=True) ?

2. Вы можете сортировать только ключи словаря (объект / отображение) с помощью json.dumps(warns, f, sort_keys = True) . Список (массив) не может быть отсортирован с помощью этой функции. Т.е. {"b": 456, "a": 123} будет отсортирован по {"a": 123, "b": 456} , но [3, 2, 1] останется [3, 2, 1] .

3. @deadshot разве это не сортируется только по алфавиту, и я не уверен, что ты имеешь в виду??

4. @RomulusHill Я обновил свой комментарий выше дополнительным примером.

5. О, теперь я понимаю, арти

Ответ №1:

Из https://docs.python.org/3/library/json.html#json.dump :

Если значение sort_keys равно true (по умолчанию: False), то выходные данные словарей будут отсортированы по ключу.

Сортировка по дате отличается, поскольку зависит от структуры вашего JSON. Если вам это действительно нужно, вы можете изменить кодировщик:

Чтобы использовать пользовательский подкласс JSONEncoder (например, тот, который переопределяет метод default() для сериализации дополнительных типов), укажите его с помощью cls kwarg; в противном случае используется JSONEncoder .

Это используется для сериализации типов, но вы также можете управлять порядком вывода.

Другим решением является использование отсортированного массива в JSON, чтобы обеспечить соблюдение порядка.