Perl:哈希 - 按值排序并获取密钥

时间:2018-02-10 12:30:45

标签: perl hash

是否有一些perl"魔法"迭代通过值排序的哈希值,但在迭代中获取密钥?

按X排序,让X变得简单(键,值) - 以及按键排序并获取值。

谢谢!

2 个答案:

答案 0 :(得分:5)

my %hash = ( one => 'a', two => 'b', three => 'c', four => 'd' );
for my $k ( sort { $hash{$a} cmp $hash{$b} } keys %hash ) {
    print "$k: $hash{$k}\n";
}
__END__
one: a
two: b
three: c
four: d

答案 1 :(得分:3)

请记住将来提供您的数据的示例,所需的结果以及您编写的代码及其错误的说明。

目前你的问题很模糊,我不得不作出一些可能错误或可能不错的假设

它不是神奇的&#34 ;;你只需编写适当的>>> r = requests.post(url, data=json.dumps(params), headers=headers) >>> print(r.text) { "args": {}, "data": "{\"username\": \"foo\", \"password\": \"b@r\"}", "files": {}, "form": {}, "headers": { "Accept": "application/json", "Accept-Encoding": "gzip, deflate", "Connection": "close", "Content-Length": "38", "Content-Type": "application/json", "Host": "httpbin.org", "User-Agent": "python-requests/2.12.4" }, "json": { "password": "b@r", "username": "foo" }, "origin": "xxx.xxx.xxx.xxx", "url": "http://httpbin.org/post" }

这将按照相应值的升序词汇顺序对sort的键进行排序

%hash

您也可以像这样使用my @sorted_keys = sort { $hash{$a} cmp $hash{$b} } keys %hash; 。它可能比简单的List::UtilsBy技术快得多,具体取决于您的数据

sort