You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell如何将哈希数组按Code分组为指定格式的哈希表?

PowerShell: Group Hashtable Array by Code into ID Lists

我明白你想要的是将每个Code映射到对应ID数组的哈希表,之前尝试Group-Object没得到预期结果,大概率是因为没对分组后的结果做格式转换。其实Group-Object正是解决这个问题的核心工具,只需要后续几步转换就能得到你要的结构:

完整解决方案代码

$dataset = @(
    @{ ID = "1234567891"; Code = "ABC1111" },
    @{ ID = "1234567892"; Code = "ABC1111" },
    @{ ID = "1234567893"; Code = "ABC1112" },
    @{ ID = "1234567894"; Code = "ABC1113" },
    @{ ID = "1234567895"; Code = "ABC1114" },
    @{ ID = "1234567896"; Code = "ABC1111" }
)

# 初始化空哈希表用于存储分组结果
$groupedDataset = @{}

# 分组并转换为目标格式
$dataset | Group-Object -Property Code | ForEach-Object {
    # 用分组的Code作为键,提取该组所有ID作为值数组
    $groupedDataset[$_.Name] = $_.Group.ID
}

# 验证结果
$groupedDataset

代码说明

  1. 初始化哈希表:先创建一个空的哈希表$groupedDataset,用来存放最终的分组结果。
  2. 分组数据:Group-Object -Property Code会把原始哈希数组按Code属性分组,返回的是一组GroupInfo对象,每个对象包含:
    • Name:当前分组的Code值
    • Group:属于该分组的所有原始哈希表对象
  3. 转换为目标格式:通过ForEach-Object遍历每个分组,将Name作为哈希表的键,把Group中所有对象的ID属性提取成数组作为对应的值。

执行这段代码后,$groupedDataset就会完全符合你想要的格式:

Name                           Value
----                           -----
ABC1111                        {1234567891, 1234567892, 1234567896}
ABC1112                        {1234567893}
ABC1113                        {1234567894}
ABC1114                        {1234567895}

内容的提问来源于stack exchange,提问作者Alex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 06:47:45