我在Powershell中有一个包含以下行的数组: 1,送给Tgt,10,FLD 2,XM,8,连接 3,TX,12,连接
第一列是行计数器,第二列是过滤器类型,第三列是计数,第四列是行动类型。
我需要创建第二个和第二个的哈希表。第3列。
当我在Powershell中执行以下操作时,它会创建一个我可以使用的哈希表。
$z=@()
$z = {
Tgt = 10
XM = 8
TX = 12
}
但是,如果我使用foreach尝试做同样的事情,它会创建一个集合的集合。
foreach ($b in $arr) {
$z2 += @{$b[1] = $b[2]}
}
每个都有3个元素,但哈希表$ z是{System.Collections.DictionaryEntry,System.Collections.DictionaryEntry,System.Collections.DictionaryEntry}
而哈希表$ z2是
{{System.Collections.DictionaryEntry},{System.Collections.DictionaryEntry},{System.Collections.DictionaryEntry}}
$ z可以使用$ z.Keys在foreach中引用,但我无法在$ z2上引用相同的内容。即使每行有3行,$ z也是3行数组,但$ z2是3个数组的数组,每行1行。我想要做的是让$ z和$ z2哈希表在各方面都相同。
我确定我正在做一些显而易见的事情。错误尝试从现有阵列创建此哈希表,但无法弄清楚我做错了什么。任何建议表示赞赏。
谢谢!
答案 0 :(得分:3)
您没有显示初始化$z2
的位置,但使用此行:
$z2 += @{$b[1] = $b[2]}
您正在使用单个条目(键$b[1]
和值$b[2]
)创建新的哈希表,并将其添加到$z2
。
相反,请尝试使用:
$z2[$b[1]] = $b[2]
要创建空哈希表,请使用@{}
,而不是@()
来创建数组。