高效解析键值数据
Efficently Parse out Key-Value Data
数据集:
Key Value
Item#1 1
Item#1 2
Item#1 3
Item#2 4
Item#2 2
Item#2 3
Item#3 1
Item#3 2
Item#3 3
最终,最终目标是为每个唯一键提取第一个值。因此,例如从上面的数据集中,我想提取值 1、4 和 1,因为它是每个键的第一个条目。
我有这段代码,把它拉到唯一的键名,而不是值。我可能遗漏了一些简单的东西,所以感谢您的帮助
$CollectionTable.GetEnumerator() | Where-Object { $_.Key -Like 'Item#' } | Select-Object { $_.key } -Unique
在 Select-Object 下,我尝试执行 $_.Value,但是 returns 项目以“Item#”开头的每个唯一值
如果它是一个对象 table,例如:
$CollectionTable = ConvertFrom-Csv @'
Key, Value
Item#1, 1
Item#1, 2
Item#1, 3
Item#2, 4
Item#2, 2
Item#2, 3
Item#3, 1
Item#3, 2
Item#3, 3
'@
它将是:
$CollectionTable |Group-Object Key |ForEach-Object { $_.Group[0].Value }
1
4
1
因为它似乎是 KeyValuePair<TKey,TValue>
结构的 table:
$CollectionTable = $CollectionTable |ForEach-Object {
[Collections.Generic.KeyValuePair[String,Int]]::New($_.Key, $_.Value)
}
它将是:
$CollectionTable.Key |Get-Unique |ForEach-Object {
($CollectionTable |Where-Object Key -eq $_)[0].Value
}
1
4
1
您也可以为此使用 HashSet
:
$Keys = [System.Collections.Generic.HashSet[String]]::New()
$CollectionTable.Where{ $Keys.Add($_.Key) }.Value
1
4
1
数据集:
Key Value
Item#1 1
Item#1 2
Item#1 3
Item#2 4
Item#2 2
Item#2 3
Item#3 1
Item#3 2
Item#3 3
最终,最终目标是为每个唯一键提取第一个值。因此,例如从上面的数据集中,我想提取值 1、4 和 1,因为它是每个键的第一个条目。
我有这段代码,把它拉到唯一的键名,而不是值。我可能遗漏了一些简单的东西,所以感谢您的帮助
$CollectionTable.GetEnumerator() | Where-Object { $_.Key -Like 'Item#' } | Select-Object { $_.key } -Unique
在 Select-Object 下,我尝试执行 $_.Value,但是 returns 项目以“Item#”开头的每个唯一值
如果它是一个对象 table,例如:
$CollectionTable = ConvertFrom-Csv @'
Key, Value
Item#1, 1
Item#1, 2
Item#1, 3
Item#2, 4
Item#2, 2
Item#2, 3
Item#3, 1
Item#3, 2
Item#3, 3
'@
它将是:
$CollectionTable |Group-Object Key |ForEach-Object { $_.Group[0].Value }
1
4
1
因为它似乎是 KeyValuePair<TKey,TValue>
结构的 table:
$CollectionTable = $CollectionTable |ForEach-Object {
[Collections.Generic.KeyValuePair[String,Int]]::New($_.Key, $_.Value)
}
它将是:
$CollectionTable.Key |Get-Unique |ForEach-Object {
($CollectionTable |Where-Object Key -eq $_)[0].Value
}
1
4
1
您也可以为此使用 HashSet
:
$Keys = [System.Collections.Generic.HashSet[String]]::New()
$CollectionTable.Where{ $Keys.Add($_.Key) }.Value
1
4
1