Python始めて3日目の俺が答えてみるけど、求めてるのはこういうこと?

dictional.get(i) or data(i)

>>692 のコードでは確認用のキーと生成するキーが不一致なので
setdefault(i, i) は意味が変わってしまうと思うんだけど

結局、プログラムの問題じゃなくてデータ構造の設計に問題がありそうな気がする
キーが常に連番で生成されるならなぜ単なる配列にしておかないの、とか