哈希可以有重复的键或值

Ste*_*ris 7 perl hash

哈希可以有重复的键或值吗?

Ale*_*man 15

它可以有重复的值但不是键.


ike*_*ami 9

对于散列和数组,只能在给定键上存储一个标量.("钥匙是独一无二的.")如果不是,你就做不到

$h{a} = 1;
$h{a} = 2;
$val = $h{a};  # 2

$a[4] = 1;
$a[4] = 2;
$val = $a[4];  # 2
Run Code Online (Sandbox Code Playgroud)

如果要将多个值与键关联,可以在该键上放置对数组(或散列)的引用,并将值添加到该数组(或散列).

for my $n (4,5,6,10) {
    if ($n % 2) {
        push @{ $nums{odd} }, $n;
    } else {
        push @{ $nums{even} }, $n;
    }
}

say join ', ', @{ $nums{even} };
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅perllol.

对于值,多个元素在哈希和数组中可以具有相同的值.

$counts{a} = 3;
$counts{b} = 3;

$counts[5] = 3;
$counts[6] = 3;
Run Code Online (Sandbox Code Playgroud)


小智 5

假设谈论"%hash"

然后:

  • 不允许重复的密钥.
  • 允许重复值.

这很容易推理,因为它是特定 Key到特定 Value 的映射,其中Value在查找中不起作用,因此独立于其他值.