【问题标题】:Get the hash number获取哈希数
【发布时间】:2015-09-01 08:08:04
【问题描述】:

我是 Perl 的新手,我一生都在用 R 工作,有些东西我真的无法理解。

我有一个哈希数组。在所有散列中,键是相同的,但值是不同的。我想获取其中具有特定值的哈希的编号,因为在该哈希中还有我想要的另一个值(并且在不同的样本中有所不同)。

我不知道这是否是我应该解决的问题,但这是我能想到的。这是数组的一部分:

$VAR16 = {
           'harmonized_name' => 'geo_loc_name',
           'attribute_name' => 'geo_loc_name',
           'content' => 'not determined',
           'display_name' => 'geographic location'}
$VAR17 = {
           'harmonized_name' => 'env_package',
           'attribute_name' => 'env_package',
           'content' => 'missing',
           'display_name' => 'environmental package'}

在本例中,我想要具有 'harmonized_name' = env_package 的哈希的“内容”值

【问题讨论】:

  • 当使用Data::Dumper 转储数组时,您应该向它传递一个引用,例如print Dumper \@array。这样你就不会得到所有不相关的$VAR99 =

标签: arrays perl hash


【解决方案1】:

您可以使用grep 过滤所有具有'harmonized_name' = env_package 的数组元素,然后检查它们的值是否为content

use strict;
use warnings;

my @AoH = (
  {
    'harmonized_name' => 'geo_loc_name',
    'attribute_name' => 'geo_loc_name',
    'content' => 'not determined',
    'display_name' => 'geographic location'
  },
  {
    'harmonized_name' => 'env_package',
    'attribute_name' => 'env_package',
    'content' => 'missing',
    'display_name' => 'environmental package'
  }
);

my @result = grep { $_->{harmonized_name} eq "env_package" } @AoH;

print $_->{content}, "\n" for @result;

输出

missing

【讨论】:

    猜你喜欢
    • 2010-12-19
    • 2012-08-17
    • 1970-01-01
    • 2016-07-22
    • 2013-05-01
    • 2015-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多