Perl   发布时间:2022-04-07  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了当键和值都是数组引用时,Perl哈希大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
有一个问题,其中数字对映射到其他数字对.例如,(1,2) – >(12,97).有些对可以映射到多个其他对,所以我真正需要的是能够将一对映射到列表中,如(1,2) – >((12,97),(4,1)).在一天结束时,我想分别处理每个值(即每个列表列表).

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中,我必须使用refs作为键和值.所以我当然可以说:

$keyref = [ x1,y1 ]
$valref = [ a,b ]
%my_hash = { $keyref => $valref }

但是当另一对(x2,y2)出现时会发生什么?即使x2 == x1和y2 == y1,$keyref = [x2,y2]也会与之前生成的keyref不同,所以我看不到进行查找的方法.当然,我可以将(x2,y2)与每个解除引用的哈希键进行比较,但毕竟,上帝精确地给了我们哈希表以避免需要这样做.

有Perl解决方案吗?

谢谢,

-W.

解决方法

在Perl中,所有散列键都是字符串,或者在查找之前被“字符串化”.使用数组引用作为键通常是错误的方法.

那么使用“二维”哈希呢?

$hash{$x1}{$y1} = [ $a,$b ];
# or
%hash = ( $x1 => { $y1 => [ $a,$b ] } );


($x2,$y2)=($x1,$y1);
print @{$hash{$x2}{$y2}};   # will print $a and $b

大佬总结

以上是大佬教程为你收集整理的当键和值都是数组引用时,Perl哈希全部内容,希望文章能够帮你解决当键和值都是数组引用时,Perl哈希所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。