Вот способ сделать это, используя генератор для получения последовательных пар ключ-значение:
data = {"A":[1,2,3,4,5], "B":[1,2,3], "C":[1,2,3,4,5,6,7,8]}
def key_value_gen(data):
# will yield ('A', 1), ('A', 2), .... ('C', 8)
for key, values in data.items():
for value in values:
yield key, value
out = []
size = 4
for index, (key, value) in enumerate(key_value_gen(data)):
# if the index is a multiple of size, we add a new dict
if index % size == 0:
out.append({})
out[-1].setdefault(key, []).append(value)
print(out)
# [{'A': [1, 2, 3, 4]}, {'A': [5], 'B': [1, 2, 3]}, {'C': [1, 2, 3, 4]}, {'C': [5, 6, 7, 8]}]