Python. Поиск и сравнение по словарю

Есть 10 моментов из суток, с временем в часах, минутах и секундах, нужна программа которая сможет делать сравнение на два любых момента и определит, какой из них был раньше. Пробую сделать через цикл for, была идея, делаю просто n1 и n2 через input, А сравнивает так: поиск минимального значение 'h', а если есть равные есть, тогда перейти к сравнению 'm' и аналогично к 's'. Мой код:

ivents={ 
'1':{'h': 23,'m': 11,'s':32},
'2':{'h': 4,'m': 32,'s':13},
'3':{'h': 6,'m': 14,'s':51},
'4':{'h': 14,'m': 32,'s':1},
'5':{'h': 2,'m': 4,'s':32},
'6':{'h': 21,'m': 58,'s':3},
'7':{'h': 16,'m': 51,'s':6},
'8':{'h': 19,'m': 21,'s':51},
'9':{'h': 17,'m': 32,'s':16},
'10':{'h': 2,'m': 6,'s':19},
            }

n1=int(input("n1:"))
n2=int(input("n2:"))

for num in ivents:
    if n1[h] != n2[h] in num:
        for 'h' in num:
        key_min = min(ivents.keys(), key=(lambda k: ivents[k]))  
    elif n1[m] != n2[m] in num:
        for 'm' in num:
        key_min = min(ivents.keys(), key=(lambda k: ivents[k]))
    else:
        for 's' in num:
        key_min = min(ivents.keys(), key=(lambda k: ivents[k]))  
    print(key_min)

Ответы (2 шт):

Автор решения: Jack_oS

Реализация преобразования и сравнения времени, как сказал @Kers, возможно, подойдет:

import datetime

events = { 
    '1':{'h': 23,'m': 11,'s':32},
    '2':{'h': 4,'m': 32,'s':13},
    '3':{'h': 6,'m': 14,'s':51},
    '4':{'h': 14,'m': 32,'s':1},
    '5':{'h': 2,'m': 4,'s':32},
    '6':{'h': 21,'m': 58,'s':3},
    '7':{'h': 16,'m': 51,'s':6},
    '8':{'h': 19,'m': 21,'s':51},
    '9':{'h': 17,'m': 32,'s':16},
    '10':{'h': 2,'m': 6,'s':19},
}

n1 = input('n1: ')
n2 = input('n2: ')

d1 = datetime.datetime.strptime(f'{events[n1]["h"]}:{events[n1]["m"]}:{events[n1]["s"]}', '%H:%M:%S').time()
d2 = datetime.datetime.strptime(f'{events[n2]["h"]}:{events[n2]["m"]}:{events[n2]["s"]}', '%H:%M:%S').time()

if d1 > d2:
    print(f'событие {n2} произошло раньше, чем {n1}')
elif d1 < d2:
    print(f'событие {n1} произошло раньше, чем {n2}')
else:
    print('события произошли одновременно')

PS Хотя, если формат именно такой, как в тесткейсе, проще и понятнее перевести всё в секунды и сравнить два числа... и писАть меньше:

d1_seconds = events[n1]["h"]*3600 + events[n1]["m"]*60 + events[n1]["s"]
d2_seconds = events[n2]["h"]*3600 + events[n2]["m"]*60 + events[n2]["s"]

if d1_seconds > d2_seconds:
    print(f'событие {n2} произошло раньше, чем {n1}')
elif d1_seconds < d2_seconds:
    print(f'событие {n1} произошло раньше, чем {n2}')
else:
    print('события произошли одновременно')
→ Ссылка
Автор решения: Danis
ivents = { 
    '1': {'h': 23,'m': 11,'s':32},
    '2': {'h': 4,'m': 32,'s':13},
    '3': {'h': 6,'m': 14,'s':51},
    '4': {'h': 14,'m': 32,'s':1},
    '5': {'h': 2,'m': 4,'s':32},
    '6': {'h': 21,'m': 58,'s':3},
    '7': {'h': 16,'m': 51,'s':6},
    '8': {'h': 19,'m': 21,'s':51},
    '9': {'h': 17,'m': 32,'s':16},
    '10': {'h': 2,'m': 6,'s':19},
}

for key, value in ivents.items():
    ivents[key] = tuple(value.values())

a = input()
b = input()

print(min(ivents[a], ivents[b]))
→ Ссылка