Ho un problema in cui coppie di numeri si associano ad altre coppie di numeri. Ad esempio, (1,2) -> (12,97). Alcune coppie possono associarsi a più coppie, quindi quello di cui ho veramente bisogno è la possibilità di mappare una coppia in una lista di liste, come (1,2) -> ((12,97), (4,1)). Alla fine del giorno voglio elaborare separatamente ciascuno dei valori (cioè ogni elenco di liste).Perl hash quando sia le chiavi che i valori sono riferimenti di matrice
In Python, ho potuto fare questo semplicemente dicendo:
key = (x, y)
val = [ a, b ]
if (x,y) not in my_dict:
my_dict[ (x,y) ] = []
my_dict[ (x,y) ].append([a,b])
Tuttavia, in Perl, devo usare arbitri per le chiavi e valori. Quindi posso sicuramente dire:
$keyref = [ x1, y1 ]
$valref = [ a, b ]
%my_hash = { $keyref => $valref }
Ma cosa succede quando arriva un'altra coppia (x2, y2)? Anche se x2 == x1 e y2 == y1, $ keyref = [x2, y2] sarà diverso dal precedente keyref generato, quindi non vedo un modo per fare la ricerca. Certo, potrei confrontare (x2, y2) con ogni chiave hash dereferenziata, ma dopotutto, Dio ci ha dato delle tabelle hash proprio per evitare la necessità di farlo.
Esiste una soluzione Perl?
Grazie,
-W.
Non è possibile utilizzare un riferimento come chiave. (almeno no senza usare un hash * legato *) –