perl - 如何在 Perl 中保存哈希的第二维
问题描述
我如何将这些数组按顺序保存到这个数组哈希中,而不是按照字母顺序,只需根据数组保存。
啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊
#!/usr/bin/perl
use warnings;
use strict;
use Tie::IxHash;
use Data::Dumper;
my @NAME= qw(AA AB AC BA BB BC CA CB CC AA AB AC BA BB BC CA CB CC AA AB AC BA BB BC CA CB CC AD CD CE CF BD BE);
my @FAMILY= qw(A A A B B B C C C A A A B B B C C C A A A B B B C C C A C C C B B);
my @COMMUNITY= qw(0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 0 2 2 2 1 1);
tie my %COMMUNITY_FAMILY_NAME,'Tie::IxHash' ;
push @{ $COMMUNITY_FAMILY_NAME{ $COMMUNITY[$_] }{ $FAMILY[$_] } }, $NAME[$_] for 0 .. $#NAME;
print Dumper(\%COMMUNITY_FAMILY_NAME);
输出:
$VAR1 = {
'0' => {
'A' => [
'AA',
'AB',
'AC',
'AD'
],
'C' => [
'CA',
'CB',
'CC'
],
'B' => [
'BA',
'BB',
'BC'
]
},
'1' => {
'A' => [
'AA',
'AB',
'AC'
],
'C' => [
'CA',
'CB',
'CC'
],
'B' => [
'BA',
'BB',
'BC',
'BD',
'BE'
]
},
'2' => {
'A' => [
'AA',
'AB',
'AC'
],
'C' => [
'CA',
'CB',
'CC',
'CD',
'CE',
'CF'
],
'B' => [
'BA',
'BB',
'BC'
]
}
};
预期输出:
$VAR1 = {
'0' => {
'A' => [
'AA',
'AB',
'AC',
'AD'
],
'B' => [
'BA',
'BB',
'BC'
]
'C' => [
'CA',
'CB',
'CC'
],
},
'1' => {
'A' => [
'AA',
'AB',
'AC'
],
'B' => [
'BA',
'BB',
'BC',
'BD',
'BE'
'C' => [
'CA',
'CB',
'CC'
],
]
},
'2' => {
'A' => [
'AA',
'AB',
'AC'
],
'B' => [
'BA',
'BB',
'BC'
]
'C' => [
'CA',
'CB',
'CC',
'CD',
'CE',
'CF'
],
}
};
解决方案
您的子哈希不绑定到Tie::IxHash
,因此它们是普通/无序的。您可以tie
在使用前通过每个子哈希来更改它。
# push @{ $COMMUNITY_FAMILY_NAME{ $COMMUNITY[$_] }{ $FAMILY[$_] } }, $NAME[$_] for 0 .. $#NAME;
for (0 .. $#NAME) {
my $href = $COMMUNITY_FAMILY_NAME{ $COMMUNITY[$_] } ||= do {
tie my %hash, 'Tie::IxHash';
\%hash;
};
push @{ $href->{ $FAMILY[$_] } }, $NAME[$_];
}
推荐阅读
- html - 如何使用 CSS 从 li 中删除单词?
- tomcat - Tomcat 8 - 在不更改 server.xml 的情况下启用 RewriteValve
- r - How to select random columns from a dataset
- mysql - 根据给定的数组集动态替换结果值
- phpspreadsheet - PhpSpreadsheet 如何读取 xlsx 工作簿密码保护文件
- linux - if 子句在 cron 中无法正常工作,而在命令行中工作正常
- php - 具有数组格式的字符串到数组
- javascript - 函数不能使用 window.location.href
- python - NodeJS AES 加密 Python 解密
- validation - ember-cp-validations - 如何在提交前没有失去焦点的情况下显示错误消息?