2017-10-14 53 views
-4

如果我有一個Perl散列,並且我隨機生成了一個數值,那麼如何讓我的代碼檢查隨機生成的值是否已經存在於散列中?檢查散列中是否已經存在隨機生成的值

+2

(谷歌是在這裏你的朋友,這是你可以很容易地擡起頭來爲自己的東西一個很好的例子。) – Mort

+1

@Mort我會說,但對於新人來說,這並不容易找到。 「價值」和「存在」確實很容易,但「反向」技巧並不那麼簡單。 – simbabque

回答

1

使用exists built-in

要檢查鑰匙:

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 
+2

*「您* ***可能會丟失一些數據」*!如果'%reverse'只使用一次,那麼使用'List :: Util :: any {$ _ == 3}值%foo'可能會更快 – Borodin

相關問題