【发布时间】:2017-01-26 11:43:00
【问题描述】:
#!/usr/bin/perl
%mylist=("svrmlb"=>"10.0.0.1","svrcmb"=>"10.0.0.2","svrkdy"=>"10.0.0.3");
print("key-val\n");
for $x (keys(%mylist))
{
print ("$x:$mylist{$x}\n");
}
print("\nvals\n");
for $x (values(%mylist))
{
print ("$x\n");
}
当我编译上面的代码时,我得到以下输出
key-val
svrcmb:10.0.0.2
svrkdy:10.0.0.3
svrmlb:10.0.0.1
vals
10.0.0.2
10.0.0.3
10.0.0.1
但我的预期输出是
key-val
svrmlb:10.0.0.1
svrcmb:10.0.0.2
svrkdy:10.0.0.3
vals
10.0.0.1
10.0.0.2
10.0.0.3
我的问题是为什么它被排序,我没有对键或值应用排序。这是哈希的特征吗?早些时候,我尝试对其他几个散列数组进行排序,但它们不是这样的。请帮我理解。
【问题讨论】:
-
运行几次,你可能每次都有不同的输出。那应该回答你的问题。
-
是的,顺序正在改变,这意味着键不在列表中的顺序?
-
关于“我没有对键或值应用排序”,没错。您根本没有指定订单。
-
@ikegami 现在我明白了!!!