PowerShell遍历字典值数组时出现扁平化问题,求解决方法
PowerShell有序字典遍历异常的原因与解决方法
问题原因
你的遍历逻辑存在两个关键错误:
- 外层
foreach($Key in $dictionary)遍历的是有序字典的键值对条目对象,每个对象包含Key(键名)和Value(对应数组)两个属性,而非单独的键。 - 你错误使用了
$Key.Values(复数),实际每个条目只有一个对应的值数组,应该用$Key.Value(单数)。当你调用$Key.Values时,得到的是包含整个数组的集合,内层foreach仅执行一次;而PowerShell在字符串插值时,会将数组元素自动用空格拼接成单个字符串,导致你看到的扁平化输出。
另外,直接打印数组时PowerShell会自动遍历元素逐个输出,这是PowerShell对数组类型的默认输出行为,和字符串插值的逻辑不同。
正确实现方式
方式一:修正原遍历逻辑
foreach($entry in $dict){ foreach($item in $entry.Value){ "New string with $item" } }
方式二:遍历字典键名(更直观)
foreach($keyName in $dict.Keys){ foreach($item in $dict[$keyName]){ "New string with $item" } }
两种方式都会输出你预期的结果:
New string with value1 New string with value2 New string with value3 New string with value1 New string with value2
内容的提问来源于stack exchange,提问作者Arcturus
相关产品推荐
相关产品推荐

