perl – Whay是将哈希内部翻出来的最优雅方式吗?
发布时间:2020-12-15 21:52:12 所属栏目:大数据 来源:网络整理
导读:将哈希内部转化为最优雅的方法是什么? 我的意思是用值替换键,反之亦然(假设所有值都是100%唯一的). 例如. 从…开始 my %start = (1="a",2="b",3="c");# ...# PROFIT: my %finish = ("c" = 3,"b" = 2,"a" = 1); 我知道我可以用蛮力的方式做到这一点: forea
将哈希内部转化为最优雅的方法是什么?
我的意思是用值替换键,反之亦然(假设所有值都是100%唯一的). 例如. 从…开始 my %start = (1=>"a",2=>"b",3=>"c"); # ... # PROFIT: my %finish = ("c" => 3,"b" => 2,"a" => 1); 我知道我可以用蛮力的方式做到这一点: foreach my $key (keys %start) { my $value = $start{$key}; $finish{ $value } = $key; } 但这不是最优雅的方式! 解决方法
反向可能是最惯用的方式之一:
my %finish = reverse %start; 这是有效的,因为reverse将%start hash作为表单列表(key1 value1 key2 value2 … keyN valueN);然后反向反转列表(valueN keyN … value1 key1).将该列表分配给哈希变量然后将其转换为哈希,其中奇数元素成为键,甚至元素成为值 或者您可以使用地图(不太优雅,但仍然是惯用的): my %finish = map { ( $start{$_} => $_ ) } keys %start; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |