这是一个基本问题,但我被困住了。我有以下代码:
$array = @(
$hashtable1 = @{
Name = "Test1"
Path = "C:\Test1"
}
$hashtable2 = @{
Name = "Test1"
Path = "C:\Test1"
}
)
该数组已创建但为空。我尝试了逗号分隔:
$hashtable1 = @{}, $hashtable2 = @{}
但是这没有用。怎么了?
答案 0 :(得分:3)
您正在将哈希表分配为变量。取出变量分配:
s1 = len(self.Seq1)
s2 = len(self.Seq2)
self.M = [[0 for x in range(s1)] for y in range(s2)]
self.Ix = [[0 for x in range(s1)] for y in range(s2)]
self.Iy = [[0 for x in range(s1)] for y in range(s2)]
for i in range(s1):
for j in range(s2):
if i == 0 and j != 0:
self.M[i][j]= - math.inf #Error in this line
if i != 0 and j == 0:
self.M[i][j]= - math.inf
答案 1 :(得分:1)
gms0ulman's helpful answer为构建哈希表数组提供了有效的解决方案。
要提供一些背景信息:
诸如$hashtable1 = ...
之类的变量赋值不是表达式,因此它不会产生无输出,这就是为什么您的$array =
假设@(...)
没看到输出,分配最终包含一个空数组。
但是,您可以简单地将赋值语句括在(...)
中,使赋值语句产生输出,从而将它们转换为表达式,从而允许您将变量赋给变量并输出分配的值。
@(...)
;相反,您可以使用数组构造运算符,
。
尽管可能不需要,但下面的示例演示了如何构造哈希表数组 以及如何将各个哈希表保存在专用变量中:
$array =
($hashtable1 = @{
Name = "Test1"
Path = "C:\Test1"
}),
($hashtable2 = @{
Name = "Test1"
Path = "C:\Test1"
})