2

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

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

这只会打印出来

=>

我在 perldoc 上看到这个成语:

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

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

4

5 回答 5

10

超级混乱但实用的答案:

@questions{@u_list}=();

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

于 2013-06-28T21:13:41.320 回答
8
my %questions = map { $_ => undef } @u_list;

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

于 2013-06-28T21:14:50.310 回答
3
 %hash = map { $_ => '' } @array;

这会将值设置为空字符串

于 2013-06-28T21:15:29.383 回答
2

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

所以你不得不说

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

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

于 2013-06-28T21:20:55.693 回答
1

这里有几种不同的方法可以做到这一点,仅供参考。

使用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;
于 2013-06-29T13:36:59.087 回答