#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]):
...