【问题标题】:Copy array to hash将数组复制到哈希
【发布时间】:2013-06-26 18:12:34
【问题描述】:

我正在尝试将数组复制到哈希中,这样数组的每个元素都是一个键,后跟一个空值。

my %questions = map { @u_list => $_ } @u_list;

这只会打印出来

=>

我在 perldoc 上看到这个成语:

     %hash = map { get_a_key_for($_) => $_ } @array;

但我不知道如何设置键。我希望键是数组中的每个元素。

【问题讨论】:

  • my %questions = map { $_ => undef } @u_list; 或者,用 "" 或 0 代替 undef。
  • 我可以写 %questions = map { "$_\t" => '' } @u_list;要在键后添加标签?

标签: perl


【解决方案1】:

超级混乱但实用的答案:

@questions{@u_list}=();

这是使用哈希切片语法来指定一组哈希键..

【讨论】:

  • 切片语法,嗯?它看起来非常密集。我得调查一下。
  • 它也可以用于将每个元素设置为相同的值:@questions{@u_list}=("unknown")x@u_list 将每个问题设置为字符串“未知”。
【解决方案2】:
my %questions = map { $_ => undef } @u_list;

在地图中,@u_list 的每个元素都设置为 $_。

【讨论】:

    【解决方案3】:
     %hash = map { $_ => '' } @array;
    

    这会将值设置为空字符串

    【讨论】:

      【解决方案4】:

      $_ 是您列表中的当前元素@u_list。

      所以你不得不说

      my %questions = map { $_ => 1 } @u_list;

      将列表元素映射为哈希键。

      【讨论】:

        【解决方案5】:

        这里有几种不同的方法,仅供参考。

        使用map

        my %questions = map { $_, undef } @u_list;
        

        使用foreach

        my %questions;
        $questions{$_} = undef foreach ( @u_list );
        

        使用hash slice。

        my %questions;
        @questions{@u_list} = (undef) x @u_list;
        

        【讨论】:

          猜你喜欢
          • 2011-05-12
          • 1970-01-01
          • 2020-07-24
          • 1970-01-01
          • 2012-09-03
          • 2013-01-10
          • 2012-12-25
          • 1970-01-01
          • 2013-02-01
          相关资源
          最近更新 更多