如何確定所有散列鍵是否具有某些值?如何查找散列中的所有密鑰在Perl中具有值
1
A
回答
8
從perldoc -f exists
:
print "Exists\n" if exists $hash{$key};
print "Defined\n" if defined $hash{$key};
print "True\n" if $hash{$key};
print "Exists\n" if exists $array[$index];
print "Defined\n" if defined $array[$index];
print "True\n" if $array[$index];
散列或數組元素可以是真 僅當它被定義,並且如果 它存在定義,但是反過來不 一定成立。
+0
存在並刪除數組元素有趣而不總是有用的屬性。如果你真的需要這些,你最好使用散列。 – ysth 2009-07-03 16:29:11
4
如果密鑰存在,它有一個值(即使這個值是undef
)這樣:
my @keys_with_values = keys %some_hash;
6
my @keys_with_values = grep { defined $hash{$_} } keys %hash;
重讀你的問題,似乎你正在試圖找出你的散列中的任何值是否是未定義的,在這種情況下,你可以說類似
my @keys_without_values = grep { not defined $hash{$_} }, keys %hash;
if (@keys_without_values) {
print "the following keys do not have a value: ",
join(", ", @keys_without_values), "\n";
}
1
你的問題是不完整的。因此這種代碼可以是答案;-)
my %hash = (
a => 'any value',
b => 'some value',
c => 'other value',
d => 'some value'
);
my @keys_with_some_value = grep $hash{$_} eq 'some value', keys %hash;
編輯:我又重讀的問題,並決定這個問題的答案可能是:
sub all (&@) {
my $pred = shift();
$pred->() or return for @_;
return 1;
}
my $all_keys_has_some_value = all {$_ eq 'some value'} values %hash;
0
如果你只想知道是否所有值都已定義,或者任何未定義的值都可以這樣做:
sub all_defined{
my($hash) = @_;
for my $value (values %$hash){
return '' unless defined $value; # false but defined
}
return 1; #true
}
0
還有一種方法,使用each。 TIMTOWDI
while (my($key, $value) = each(%hash)) {
say "$key has no value!" if (not defined $value);
}
相關問題
- 1. Perl:查找數組散列的密鑰
- 2. Perl:爲單個密鑰打印具有多個值的散列
- 3. 如何查找具有多個值的密鑰的平均值?
- 4. 如何獲得列表中所有密鑰的密鑰列表?
- 5. 如何檢查密鑰的數量在散列圖中有一定的值
- 6. 在任何列中查找具有空值的所有行
- 7. 從Perl散列中刪除密鑰
- 8. 如何使用PCLCrypto中的現有密鑰來散列密碼?
- 9. Java找到所有具有特定值的密鑰
- 10. 如何查找NSKeyedArchiver/NSKeyedUnarchiver中使用的所有密鑰
- 11. 如何在數組散列的Perl散列中查找最小值?
- 12. 如何獲得具有相同最高值的所有密鑰?
- 13. 如何更新散列的所有密鑰?
- 14. PHP:如何使所有陣列具有相同的密鑰
- 15. 返回字典中具有相同值的所有密鑰
- 16. 如何獲取散列perl哈希中的密鑰數量?
- 17. Perl,獲取所有散列值
- 18. 在沒有密鑰的情況下從散列中查找桶unobdered_map
- 19. 如何在散列中查找值?
- 20. 如何存儲具有相同密鑰的散列表中的多個對象?
- 21. 將新值賦給散列表中的現有密鑰
- 22. 如何檢查散列中的密鑰是否存在(redis)?
- 23. 在所有列中查找唯一值
- 24. 找到模板工具包密鑰散列值
- 25. 如何從散列中刪除密鑰?
- 26. 如何查找有序字典中的所有元素,實現爲具有密鑰k的二叉樹k
- 27. 在Django中,如何清除所有的memcached密鑰和值?
- 28. 如何查找plist中的所有值?
- 29. 查找記錄只有在所有匹配的密鑰
- 30. 列出所有memcached密鑰/值
這是什麼意思「有一定價值」?如果有鑰匙,就有價值。該值可能是undef,但它仍然是一個值。你想檢查什麼? – 2009-07-03 16:18:36