есть {"05:03:00": "А", "05:08:00": "B"} у меня часы 05:02:00 и нужно чтобы вывело из словаря 05:03:00
"d = {"05:03:00": "А", "05:08:00": "B"} l = list() for i in d: l.append(i) print(l[0])"
Ну в целом по таймдельте сравнивать Конечно надо задать вопрос что за приложение, тк зачастую это на уровне запросов к бд
Сходу, что в голову пришло - взять ключи словаря, перевести их в формат времени, записать в список, отсортировать. Значение, ближайшее время к которому нужно выводить, тоже перевести в формат времени. Бежать по списку и проверять, пока значение не станет больше элемента списка. Потом сравнить таймлельты между значением и элементом списка и значением и последущим элементом списка. Ну и выбрать наименьшую дельту и соответвующий ей элемент, привести его обратно к строке, и получить значение из словаря.
Спасибо
Ну, само собой, стоит обработать всякие пограничные случаи. Первый элемент в списке, последний, равенство и т. д.
если ключи распарсить в объекты datetime, то можно min(dict, key=lambda time: abs(target - time))
Да, наверное) Я ж говорю - что первое в голову пришло.
Перевести в секунды отсортировать , найти ближайшее. Если либы юзать нельзя
перевести в timestamp и найти минимальное по разнице по модулю )
Обсуждают сегодня