@drqqv

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

Столкнулся с проблемой: Есть json файл вида:
{'0': {'Date': '2022-07-15 11:25:19', 'uName': 'Hydra-L1', 'serial': '01', 'data': {'system_Serial': '1', 'system_Version': '2021-02-24', 'system_RSSI': '-77', 'system_MAC': '84:CC:A8:A5:D9:83', 'system_IP': '10.200.1.72', 'BME280_temp': '29.38', 'BME280_humidity': '35.34', 'BME280_pressure': '741.5506839999999', 'BME280_pressure_calibr_date': '2022-04-13 22:28:25'}}, '1': {'Date': '2022-07-15 11:28:03', 'uName': 'Hydra-L', 'serial': '05', 'data': {'system_Serial': '5', 'system_Version': '2021-02-24', 'system_RSSI': '-65', 'system_MAC': '68:C6:3A:F8:13:1F', 'system_IP': '10.200.1.25', 'BME280_temp': '31.47', 'BME280_humidity': '33.6', 'BME280_pressure': '741.5932180000001', 'BME280_pressure_calibr_date': '2022-04-13 22:02:26'}}, '2': {'Date': '2022-07-15 11:28:03', 'uName': 'Паскаль', 'serial': '17', 'data': {'system_Serial': '17', 'system_Version': '2022-03-21', 'system_RSSI': '-71', 'system_MAC': '44:17:93:16:1F:4C', 'system_IP': '192.168.1.86', 'weather_temp': '23.51', 'weather_pressure': '743.467999', 'weather_pressure_calibr_date': '2022-04-13 21:41:47'}}, ',


есть данные о дате, погоде и давлении.
Как мне сортировать файл по возрастанию времени (в самом файле время разбросано) ? Так же я попробовал вытащить данные и получил строку такого вида:
2022-07-15 11:28:03 Паскаль Темп:24 Давл:743
2022-07-15 11:24:37 Паскаль Темп:32 Давл:741
2022-07-15 11:26:47 Паскаль Темп:28 Давл:742
2022-07-15 11:28:10 Паскаль Темп:30 Давл:742
2022-07-15 11:27:32 Паскаль Темп:27 Давл:741
2022-07-15 11:26:19 Паскаль Темп:26 Давл:762
2022-07-15 11:23:44 Паскаль Темп:27 Давл:759
2022-07-15 11:23:44 Паскаль Темп:30 Давл:741

Как будет проще отсортировать из Json формата или из строки ?
Заранее спасибо, если надо что-то объяснить, то сделаю
  • Вопрос задан
  • 262 просмотра
Решения вопроса 2
SoreMix
@SoreMix Куратор тега Python
yellow
print(sorted(d.items(), key=lambda x: datetime.strptime(x[1]['Date'], '%Y-%m-%d %H:%M:%S')))

Преобразовать дату в datetime объект и отсортировать
Ответ написан
Комментировать
leahch
@leahch
3D специалист. Dолго, Dорого, Dерьмово.
1) Ваш json невалиден! Приведите нормальные, не битые данные! И по стандарту - кавычки двойные!!!
2) Как понятно из приведенного куска (хотя это кровь из глаз, так приводить данные!), структура данных такова (и это Вы в вопросе должны были сделать, а не тратить наше время на разбор бардака)
{"0":  {"Date":  "2022-07-15 11:25:19" .....},
"1":  {"Date":  "2022-07-15 11:26:19" .....},
"2":  {"Date":  "2022-07-15 11:27:19" .....},
"3":  {"Date":  "2022-07-15 11:28:19" .....}
...}

3) Сортировать так
import json
import pprint

data = """
{
    "0":  {"Date":  "2022-07-15 11:25:19", "Name": "Name-0"},
    "1":  {"Date":  "2022-07-15 11:26:19", "Name": "Name-1"},
    "2":  {"Date":  "2022-07-15 11:28:19", "Name": "Name-2"},
    "3":  {"Date":  "2022-07-15 11:23:19", "Name": "Name-3"}
}
"""

data_ = json.loads(data)
data__ = [v for v in  data_.values()]

pprint.pprint(sorted(data__,  key = lambda measure: measure['Date']))
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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