好的,我有一些哈希表需要使用PowerShell进行组合。以下是格式示例:
$table1 = @{"A" = "1,2";
"B" = "3,4";
"C" = "5,6"}
$table2 = @{"A" = "3";
"B" = "5";
"C" = "7"}
我需要组合表格来创建下表:
$newTable = @{"A" = "1,2,3";
"B" = "3,4,5";
"C" = "5,6,7"}
基本上,需要比较键和值。如果值不同,则需要将它们加在一起。谢谢!
答案 0 :(得分:1)
这是一种略有不同的方法:
$table1 = @{"A" = "1,2";
"B" = "3,4";
"C" = "5,6"}
$table2 = @{"A" = "3";
"B" = "5";
"C" = "7"}
$ht = $table1.Clone()
$table2.GetEnumerator() | % {$ht[$_.Key] += ",$($_.Value)"}
$ht
Name Value
---- -----
C 5,6,7
A 1,2,3
B 3,4,5
答案 1 :(得分:0)
您可以使用GetEnumerator()
方法循环显示如下所示的值。
如果您的密钥分配不均匀(有些仅存在于$table1
而其他仅存在于$table2
中),这将变得更加复杂,但它适用于您的示例方案。
$table1 = @{"A" = "1,2";
"B" = "3,4";
"C" = "5,6"}
$table2 = @{"A" = "3";
"B" = "5";
"C" = "7"}
$NewTable = @{}
$table1.GetEnumerator() |
% {
$NewTable.Add($_.Key, ("$($_.Value),$($table2[$_.Key])"))
}
答案 2 :(得分:0)
怎么样:
$table1 = @{"A" = "1,2";
"B" = "3,4";
"C" = "5,6"}
$table2 = @{"A" = "2";
"B" = "5";
"C" = "7"}
$newTable = @{}
function AddToTable($table)
{
$table.GetEnumerator() |
% {
if(!$newTable.ContainsKey($_.Key)) {$newTable.Add($_.Key, $_.Value)}
else {$newTable[$_.Key] += ",$($_.Value)"}
$newTable[$_.Key] = @($newTable[$_.Key].Split(",") | Get-Unique | Sort-Object) -Join ","
}
}
AddToTable($table1)
AddToTable($table2)