Вы уверены, что вам нужен вывод именно в таком виде? Он менее упорядочен в сравнении с банальным перебором, сложнее в реализации и создает большую нагрузку. Так или иначе:
values = [len(x) for x in list(d.values())]
for index in range(max(values)):
for key in d.keys():
try:
print("{} : {}".format(key,d[key][index]))
except IndexError:
continue