あるはずのようです...
現時点では、マイナスの影響なしに同じテーブルに多次元的にハッシュできることは魔法のように思えます。
辞書の観点からは、それについて多面的なものは 1 つもありません。辞書は、キーが n 空間を記述していると解釈していることを認識していません。
たとえば、ベクトルを巧妙に文字列にパックすることができます。これは魔法のように見えず、正しくするのがより複雑でありながら、機能的には同等です。Python 文字列は、インタプリタに関する限り、Yet Another Immutable Sequence です。
悪影響はありません。
一部のタスクは、代替実装よりも効率が悪い場合があります。たとえば、(x, y, z)
座標をキーとして使用している場合z
、実際の多次元ストアに比べて、いくつかのポイントをすべて見つけるには時間がかかります。しかし、明確さと実装の容易さと読みやすさが、効率的なストアに勝る場合があります。
唯一の欠点はパフォーマンスです。キーが大きいほど、ハッシュに時間がかかります。
簡単に言えば、Python dict のキーの唯一の要件は、それらが不変でハッシュ可能であることです。タプル (不変) の場合、これは、サブオブジェクトのハッシュを組み合わせるだけでよいことを意味します (それ自体が不変かつハッシュ可能でなければなりません)。また、frozenset をキーとして使用することもできます。リスト、ディクテーション、またはセットをキーとして使用することはできません。