数字のペアが他のペアのペアにマップされるという問題があります。たとえば、(1,2)→(12,97)です。いくつかのペアは複数の他のペアにマップされることがありますので、本当に必要なのは、ペアを(1,2) - >((12,97)、(4,1))のようなリストのリストにマップする機能です。一日の終わりに、各値(すなわち、各リストのリスト)を別々に処理したいと考えています。キーと値の両方が配列参照である場合のPerlハッシュ
Pythonでは、私は単純に言って、これを行うことができます:
key = (x, y)
val = [ a, b ]
if (x,y) not in my_dict:
my_dict[ (x,y) ] = []
my_dict[ (x,y) ].append([a,b])
しかし、Perlで、私はキーと値のためにREFを使用する必要があります。だから私は確かに言うことができます:
$keyref = [ x1, y1 ]
$valref = [ a, b ]
%my_hash = { $keyref => $valref }
しかし、別のペア(x2、y2)が来るとどうなりますか? x2 == x1とy2 == y1であっても、$ keyref = [x2、y2]は生成された前回のkeyrefとは異なるので、ルックアップを行う方法は見当たりません。もちろん、(x2、y2)と逆参照された各ハッシュキーとを比較することができましたが、結局のところ、神は私たちにハッシュテーブルを与えて、そうする必要を避けました。
Perlソリューションはありますか?
-W。
-W
参照をキーとして使用することはできません。 (少なくとも*結合*ハッシュを使用しないで) –