Perl根据某个键连接2个散列

标签 perl hash concatenation hashtable

嗨,我有两个哈希值 %Asset 和 %Activity

%Asset
Name,Computer Name
David,X
Clark,Y
Sam,Z

%Activity
Name,Activity
David,A
Clark,B
Sam,C
David,D
Clark,E
Sam,F

第二个散列的名称重复多次(可以超过2次)..我想获得一个包含简洁信息的散列..类似于

Name,Computer Name,Activity
David,X,A&D
Clark,Y,B&E
Sam,Z,C&F

我的想法以伪代码的方式是;

foreach (@Activity{qw[Name]}) {
    push @Asset{qw[Name Activity]}, $Activity['Activity']

}

最佳答案

你想要的是哈希值的哈希值。从概念上讲,您可以将有关 Assets 的所有信息合并到一个哈希中。

my %dave = (
    name          => "Dave",
    computer_name => "X",
    activity      => "A"
);

然后,这将进入由其名称作为键的所有 Assets 的更大哈希值。

$Assets{$dave{name}} = \%dave;

如果您想查找 Dave 的事件...

print $Assets{Dave}{activity};

您可以提取有关 Dave 的所有信息并将其作为哈希引用传递。

 my $dave = $Assets{Dave};
 print $dave->{activity};

这种结构不可避免地会导致将您的 Assets 建模为对象。

您可以在 Perl Data Structures Cookbook 中了解有关哈希值的哈希值的更多信息。 .

关于Perl根据某个键连接2个散列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37061977/

相关文章:

c++ - 在构造时将 C++ 迭代器范围连接到一个 const vector 成员变量中

ios - UIPinchGestureRecognizer 和 UIPanGestureRecognizer 可以合并吗?

Perl Tie::IxHash - 有 'each' 方法吗?

ajax - XML::Simple 在属性文本中保留实体

django - Perl 中的哪个 MVC 框架有自己的独立服务器?

linux - 为什么在反引号中出现语法错误,即使它在终端中有效?

hash - 在实践中忽略 SHA 冲突的可能性是否安全?

javascript 去掉 url 中的位置哈希

php - 在php中连接n个数组的值

perl - Excel::Writer::XLSX:LibreOffice 问题