そのため、現在、ゲームのマップを定義するオブジェクトの2Dリストがあり、各オブジェクトはそのマップ上のタイルを表しています。コードを別の目的に転用しているときに、辞書を使用して地図データを保存する方が理にかなっているのか、それともリストを使い続けるのが理にかなっているのか疑問に思いました。リストでは、インデックスはマップのxとyを表しますが、辞書では、(x、y)タプルが辞書のキーになります。
私が尋ねる理由は、マップの変更はまれなイベントであるため、データはかなり静的であり、私が知る限り、辞書ではかなり一定のルックアップが高速になるためです。また、マップを描画するためのループを単純化する必要があります。ほとんどの場合、辞書を使用するとデータへのアクセスが簡単になると思いますが、すべての場合に当てはまるかどうかはわかりません。
これらの利点は、辞書が占めると私が想定する追加のメモリの価値がありますか?または私は利益が利益であるということについてさえ正しいですか?
編集 私は現在の方法が機能することを知っています、それはよりきれいに見えるコードを持ちそして潜在的な欠点を見つけるために切り替えることが理にかなっているかどうかにもっと関係がありました。配列をループするようなものは、次のようなものから始まります
for i in range(size[0]):
for e in range(size[1]):
thing.blit(....using i and e)
に
for i, e in dict.items():
i.blit(....using i and e)
またはdictアイテムを検索すると
def get(x, y):
if (x in range(size[0])) and (y in range(size[1])):
return self.map[x][y].tile
に
def get(item):
return self.dict.get(item)
それほど多くはありませんが、ややクリーンです。遅くなく、他に欠点がない場合は、そうしない理由はありません。