Из запроса MySQL я получаю данные, которые я помещаю в словарь "d" :
d = {0: (datetime.timedelta(0, 25200),), 1: (datetime.timedelta(0, 25500),), 2: (datetime.timedelta(0, 25800),), 3: (datetime.timedelta(0, 26100),), 4: (datetime.timedelta(0, 26400),), 5: (datetime.timedelta(0, 26700),)}
У меня есть список "m" с цифрами вроде:
m = [3, 4, 1, 4, 7, 4]
Я бы хотел проверить "m" , и если есть номер "4", я бы хотел получить еще один список "h" с часами от "d" , где индекс из списка "m" будет соответствовать клавишам из словаря "d" , поэтому: m [1], m [3], m [5] будет назначать мне часы, назначенные d [1], d [3], d [5] в списке "h":
h = [7:05:00, 7:15:00, 7:25:00]
Буду признателен за ваш вклад за это...
Я не совсем уверен, что это то, что вы ищете, но я сделаю снимок:
>>> indices = [index for index, i in enumerate(m) if i == 4]
>>> h = [d[i][0] for i in indices]
Затем вам нужно обработать timedeltas, как вы хотите.
Итак, у каждого индекса есть n-кортеж timedeltas
справа? Предполагая, из кода, что потенциально может быть более одного timedelta
для каждого индекса.
import datetime
import datetime
d = {0: (datetime.timedelta(0, 25200),), 1: (datetime.timedelta(0, 25500),), 2: (datetime.timedelta(0, 25800),), 3: (datetime.timedelta(0, 26100),), 4: (datetime.timedelta(0, 26400),), 5: (datetime.timedelta(0, 26700),)}
m = [3, 4, 1, 4, 7, 4]
def something(m, d):
h = {}
for index in m:
if index in d and index not in h:
for dt in d[index]:
total = sum([dt.seconds for dt in d[index]])
hours = total / 3600
minutes = (total - (3600 * hours)) / 60
seconds = (total - (3600 * hours) - (60 * minutes))
h[index] = "%d:%02d:%02d" % (hours, minutes, seconds)
return h.values()
print something(m, d) # returns exactly what you asked for
deltas = [str(d[i][0]) for i, j in enumerate(m) if j == 4]
создает список дельта-представлений в виде строк.
Вы просите
def hms( td ):
h = dt.seconds // 3600
m = dt.seconds%3600 // 60
s = dt.seconds%60
return h+td.days*24, m, s
[ hms(d[ m[i] ]) for i in m ]
?