-4
如果我有一个Perl散列,并且我随机生成了一个数值,那么如何让我的代码检查随机生成的值是否已经存在于散列中?检查散列中是否已经存在随机生成的值
如果我有一个Perl散列,并且我随机生成了一个数值,那么如何让我的代码检查随机生成的值是否已经存在于散列中?检查散列中是否已经存在随机生成的值
要检查钥匙:
my %foo = (bar => 1);
if (exists $foo{foo}) {
print "key foo exists";
}
if (exists $foo{bar}) {
print "key bar exists";
}
这段代码打印
key bar exists
要检查值,您需要先reverse
哈希值。记住哈希是列表,所以如果它们颠倒了,所有的键都成为值。如果某个值存在的次数已超过一次,那么您可能会获得一些数据,但如果您想知道的只是某个值是否存在,那就没有关系。
my %foo = (bar => 1, baz => 2, qrr => 1);
my %reversed = reverse %foo;
if (exists $reversed{1}) {
print "value 1 exists";
}
if (exists $reversed{3}) {
print "value 3 exists";
}
这将打印
value 1 exists
*“您* ***可能会丢失一些数据”*!如果'%reverse'只使用一次,那么使用'List :: Util :: any {$ _ == 3}值%foo'可能会更快 – Borodin
(谷歌是在这里你的朋友,这是你可以很容易地抬起头来为自己的东西一个很好的例子。) – Mort
@Mort我会说,但对于新人来说,这并不容易找到。 “价值”和“存在”确实很容易,但“反向”技巧并不那么简单。 – simbabque