@runapa

Как человекообразно отсортировать json в python?

Есть json в котором ключи имеют вид “1-1”, “1-12”, “1-2”, “1-3”…
Сейчас он отсортирован логичным для компьютера образом. А как отсортировать ключи по человечески? : “1-1”, “1-2”, “1-3”, “1-12”
  • Вопрос задан
  • 181 просмотр
Пригласить эксперта
Ответы на вопрос 4
sergey-gornostaev
@sergey-gornostaev Куратор тега Python
Седой и строгий
Стандарт JSON не гарантирует упорядоченность ключей, поэтому не стоит даже пытаться их сортировать.
Ответ написан
@deliro
In [1]: x=["1-1", "1-12", "1-2", "1-3"]

In [2]: sorted(x, key=lambda t: tuple(map(int,t.split("-"))))
Out[2]: ['1-1', '1-2', '1-3', '1-12']
Ответ написан
Комментировать
Vindicar
@Vindicar
RTFM!
Пересоздать ключи в словаре в правильном порядке и отключить дефолтную сортировку.
Ответ написан
lxstvayne
@lxstvayne
Люблю Python
from collections import OrderedDict

x = {"1-3": None, "1-1": None, "1-12": None}
ordered_dict = OrderedDict(sorted(x.items(), key=lambda item: tuple(map(int, item[0].split("-")))))
print(ordered_dict)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы