gpt4 book ai didi

powershell - PowerShell中字典内的字典

转载 作者:行者123 更新时间:2023-12-05 00:51:52 25 4
gpt4 key购买 nike

所以,我对 PowerShell 比较陌生,只是不知道如何使用数组/列表/哈希表。我基本上想做Python描绘的以下事情:

entries = {
'one' : {
'id': '1',
'text': 'ok'
},
'two' : {
'id': '2',
'text': 'no'
}
}

for entry in entries:
print(entries[entry]['id'])

输出:

1

2


但这在 PowerShell 中是如何工作的?我尝试了以下方法:

$entries = @{
one = @{
id = "1";
text = "ok"
};
two = @{
id = "2";
text = "no"
}
}

现在我不知道如何访问这些信息。

foreach ($entry in $entries) {
Write-Host $entries[$entry]['id']
}

=> Error

最佳答案

PowerShell 防止对字典进行隐式迭代以避免意外“展开”。

您可以通过显式调用 GetEnumerator() 来解决此问题并循环遍历包含的键值对:

foreach($kvp in $entries.GetEnumerator()){
Write-Host $kvp.Value['id']
}

对于更接近 Python 示例的内容,您还可以提取键值并对其进行迭代:

foreach($key in $entries.get_Keys()){
Write-Host $entries[$key]['id']
}

注意:您会发现迭代 $entries.Keys 也可以,但我强烈建议 从不 使用它,因为 PowerShell 通过属性访问解析字典键,因此,如果字典包含键为 "Keys":

的条目,则会出现意外行为
$entries = @{
Keys = 'a','b'
a = 'discoverable'
b = 'also discoverable'
c = 'you will never find me'
}

foreach($key in $entries.Keys){ # suddenly resolves to just `'a', 'b'`
Write-Host $entries[$key]
}

你只会看到输出:

discoverable
also discoverable

不是 Keysc 条目

关于powershell - PowerShell中字典内的字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71051117/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com