高效地解析出键值数据 [英] 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对象下,我尝试执行$_.Value操作,但这会返回项目以&Quot;Item#开头的每个唯一值
推荐答案
如果它是对象表,如:
$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>
结构表:
$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
这篇关于高效地解析出键值数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文