Еще одна читаемая и надежная версия, распакованная и отсортированная, и добавьте индекс:
dic_of_dics1 = {2: {"a": "B"}, 1: {"a": "A"}, 3: {"a": "C"}}
dic_of_dics2 = {1: {"d": "20"}, 2: {"d": "30"}, 3: {"d": "40"}}
for i, k in enumerate(sorted(dic_of_dics1)):
dic1, dic2 = dic_of_dics1[k], dic_of_dics2[k]
(k_a,), (a,), (k_b,), (b,) = dic1.keys(), dic1.values(), dic2.keys(), dic2.values()
print(', '.join([a, b, k_a, k_b, str(i)]))
вывод:
A, 20, a, d, 0
B, 30, a, d, 1
C, 40, a, d, 2
Я думаю, в зависимости от порядка ключа dictплохая идея.