Получить ближайшее время из данных

#python #json

#python #json

Вопрос:

Ниже приведены примеры данных:

 {
   "a":"05:32",
   "b":"12:15",
   "c":"15:42",
   "d":"18:23"
}
 

Используя эти данные: я хочу получить ближайшее следующее значение к текущему времени.
ie; Так что, если это так, 15:30 прямо сейчас, запрос должен вернуть c.

Я попытался сделать это с помощью цикла for, и это показалось не очень эффективным.

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

1. Пожалуйста, покажите нам, что вы пробовали

Ответ №1:

Вы можете использовать min с пользовательской ключевой функцией:

 d = {'a': '05:32', 'b': '12:15', 'c': '15:42', 'd': '18:23'}
def closest(c, t2 = [15, 30]):
   a, b = map(int, d[c].split(':'))
   return abs((t2[-1] 60*t2[0]) - (b 60*a))       

new_d = min(d, key=closest)
 

Вывод:

 c
 

В общем, вы можете заменить t2 = [15, 30] (используется только для демонстрационных целей) результатами из datetime.datetime.now :

 from datetime import datetime
def closest(c, t2 = [(n:=datetime.now()).hour, n.minute]):
    ...