Вы можете использовать понимание списка, чтобы умножить вторые термины в кортежах из обоих списков и построить новый список с указанной структурой:
tf = [(('0', 'CD'), 0.0036429872495446266), (('09:00', 'CD'), 0.0018214936247723133)]
idf = [(('0', 'CD'), 2.4385423487861106), (('09:00', 'CD'), 2.739572344450092)]
[(t1, v1*v2) for (t1, v1), (t2, v2) in zip(tf,idf)]
Вывод
[(('0', 'CD'), 0.008883578684102406), (('09:00', 'CD'), 0.004990113560018382)]
Обновление
Если элементы в кортежах не всегда находятся в одном и том же порядке, например:
tf = [(('0', 'CD'), 0.0036429872495446266), (0.0018214936247723133, ('09:00', 'CD'))]
, вы можете заказать их, используя:
[(t,f) if isinstance(t, tuple) else (f,t) for t, f in tf]
# [(('0', 'CD'), 0.0036429872495446266), (('09:00', 'CD'), 0.0018214936247723133)]