当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] PowerShell 中的哈希表 |哈希表在 PowerShell 中如何工作?

作者:精品下载站 日期:2024-12-14 04:58:26 浏览:16 分类:玩电脑

PowerShell 中的哈希表 |哈希表在 PowerShell 中如何工作?


[玩转系统] PowerShell 中的哈希表 |哈希表在 PowerShell 中如何工作?

PowerShell 中的哈希表简介

PowerShell Hashtable 是一种紧凑的数据结构,它将键/值对存储在哈希表中。换句话说,哈希表是一个关联数组或具有键值对的字典。键/值对本质上是一组以某种方式相关的两个元素。

在哈希表中,输入是具有关联值的唯一键,输出是具有两列的表。

  • 姓名
  • 价值

在 PowerShell 中,每个哈希表都是一个 Hashtable 对象。该对象主要是字符串或整数,但它可以是任何对象类型。

语法:

在使用哈希表之前,必须先创建它。以下是执行此操作的语法。

创建一个空的哈希表

$hash =@{}

您还可以创建哈希表并同时添加键值。

$hash = @{ key1 = item1; key2 = item2;... }

可以通过以下方式向空哈希表添加数据:

$hash.add( $key, $value )

也可以使用类似的语法创建有序字典。

以下是创建有序字典的语法。在这里,我们仅在“@”符号之前添加了[ordered]属性。

$hash =[ordered] @{ key1 = item1; key2 = item2;... }

注意:哈希表和有序字典之间的主要区别在于,哈希表不维护条目添加的顺序,而有序字典则保留。

访问哈希表值:通过键来访问哈希表值。

$hash[“key1”]

打印哈希表:要打印/显示哈希表,只需键入保存哈希表的变量名称。

$hash

上面的命令显示一个包含两列的表,一列用于键,另一列用于键的关联值。

哈希表在 PowerShell 中如何工作?

  • Hashtable 使用哈希函数将键转换为哈希值。
  • 哈希值是哈希表用来获取值的数字。
  • 然后哈希直接映射到键/值对数组中的存储桶。

让我们通过给定的示例来了解 PowerShell 的工作原理:

  • 首先,创建一个空的哈希表,然后用键值对填充它,或者,

代码:

$hash = @{}
$hash.add( 'ID', 1 )
$hash.add( 'Subject', 'Maths')
$hash.add( 'Maths', 80 )
$hash

输出:

[玩转系统] PowerShell 中的哈希表 |哈希表在 PowerShell 中如何工作?

  • 您还可以创建一个哈希表并同时对其进行初始化。

代码:

$hash = @{ID=1; Subject='Maths'; Marks=80}
$hash

输出:

[玩转系统] PowerShell 中的哈希表 |哈希表在 PowerShell 中如何工作?

对于有序哈希表

代码:

$hash=[ordered]@{ID=1; Subject='Maths'; Marks=80}
$hash

输出:

[玩转系统] PowerShell 中的哈希表 |哈希表在 PowerShell 中如何工作?

这里显示了一些示例来说明可以在哈希表上执行的操作。

编辑哈希表中的项目

.Set_Item() 方法用于编辑哈希表中的项目:

代码:

$hash=[ordered]@{ID=1; Subject='Maths'; Marks=80}
$hash.Set_Item("Subject", “English”)
$hash

输出:

[玩转系统] PowerShell 中的哈希表 |哈希表在 PowerShell 中如何工作?

  • 如果之前不存在,则新条目会自动添加到哈希表中。

代码:

$hash=[ordered]@{ID=1; Subject='English'; Marks=80}
$hash.Set_Item("NoOfStudents",30)
$hash

输出:

[玩转系统] PowerShell 中的哈希表 |哈希表在 PowerShell 中如何工作?

从哈希表中删除项目

代码:

$hash=[ordered]@{ID=1; Subject='English'; Marks=80}
$hash.Remove("NoOfStudents")
$hash

输出:

[玩转系统] PowerShell 中的哈希表 |哈希表在 PowerShell 中如何工作?

打印哈希表键

代码:

$hash=[ordered]@{ID=1; Subject='English'; Marks=80}
$hash.keys

输出:

[玩转系统] PowerShell 中的哈希表 |哈希表在 PowerShell 中如何工作?

打印哈希表值

代码:

$hash=[ordered]@{ID=1; Subject='English'; Marks=80}
$hash.values

输出:

[玩转系统] PowerShell 中的哈希表 |哈希表在 PowerShell 中如何工作?

搜索特定项目

代码:

$hash=[ordered]@{ID=1; Subject='Maths'; Marks=80}
If ($hash.Subject -eq ‘Maths’) {Echo ‘OK’}

输出:

[玩转系统] PowerShell 中的哈希表 |哈希表在 PowerShell 中如何工作?

在这里,如果“Subject”键值与“Maths”匹配,则输出为“OK”。

对于部分匹配,使用 .ContainsKey 或 .ContainsValue 方法。

$hash.ContainsKey(‘Subject’)

这将返回 True 作为输出,因为 Key 与“Subject 匹配。

$hash.ContainsKey('Date')

这将返回 False 作为输出,因为 Key 与“Date 不匹配。

$hash.ContainsValue(‘Maths’)

这将返回 True 作为输出,因为 Value 与“Maths 匹配。

$hash.ContainsValue('Physics')

这将返回 False 作为输出,因为值与“Physics 不匹配。

您还可以检查特定密钥是否存在。

代码:

$hash=[ordered]@{ID=1; Subject='Maths'; Marks=80}
If ($hash.Subject) {Echo ‘OK’}

输出:

[玩转系统] PowerShell 中的哈希表 |哈希表在 PowerShell 中如何工作?

对键和值进行排序

  • 默认情况下,哈希表条目是未排序的。
  • 每次打印键/值时,顺序可能会有所不同。
  • 由于使用排序的数据列表总是很方便,因此您可以在 Powershell 中对哈希表键/值对进行排序,但无法对哈希表本身进行排序。
  • GetEnumerator方法用于枚举键和值
  • 然后,使用 Sort-Object cmdlet 对枚举值进行排序以进行打印。

让我们通过一个例子来理解这一点。

代码:

$hash.GetEnumerator() | Sort-Object -Property key

输出:

[玩转系统] PowerShell 中的哈希表 |哈希表在 PowerShell 中如何工作?

在上面的例子中,首先,哈希表中的键和值被枚举到 $hash 变量中,然后键按字母顺序排序。

  • 要按降序对哈希表值进行排序,请看下面的示例。其操作方式与上面类似,只是您需要在 cmdlet 中添加“降序”。

代码:

$hash=[ordered]@{ID=1; Subject='Maths';Marks=80}
$hash.GetEnumerator() | Sort-Object -Property key -Descending

输出:

[玩转系统] PowerShell 中的哈希表 |哈希表在 PowerShell 中如何工作?

通过哈希表进行泼溅

  • 使用字典或列表将参数作为一个单元提供给命令的方法。
  • 当您需要指定大量参数而导致命令冗长并且您最终需要滚动屏幕或尝试将其包裹起来以使其可读时,这会很有帮助。
  • 通过splatting,您可以使用更容易阅读的数组或哈希表,而不是在一行中提供所有参数并延伸到整个屏幕。
  • Splatting 通过提供干净简洁的格式使代码阅读变得更容易让我们通过一个非常简单的示例来理解这一点。

代码:

$splat= @{year = 2019; Month = 12; day=1}
get-date @splat

输出:

[玩转系统] PowerShell 中的哈希表 |哈希表在 PowerShell 中如何工作?

注意:变量名$splat中的$符号在执行命令时会变成@符号

使用@符号而不是$符号会调用 splat 操作。

循环遍历哈希表

让我们借助下面的例子:

1.使用ForEach

代码:

$hash=[ordered]@{ID=1; Subject='Maths';Marks=80}
foreach
($key in $hash.keys)
{
$message = '{0} is {1}' -f $key, $hash[$key]
Write-Output $message
}

输出:

[玩转系统] PowerShell 中的哈希表 |哈希表在 PowerShell 中如何工作?

在这里,我们遍历哈希表中的每个键并访问

使用它的价值

2. 使用 ForEach-Object

代码:

[玩转系统] PowerShell 中的哈希表 |哈希表在 PowerShell 中如何工作?

输出:

[玩转系统] PowerShell 中的哈希表 |哈希表在 PowerShell 中如何工作?

3. 使用 GetEnumerator() 解开哈希表对象

代码:

[玩转系统] PowerShell 中的哈希表 |哈希表在 PowerShell 中如何工作?

输出:

[玩转系统] PowerShell 中的哈希表 |哈希表在 PowerShell 中如何工作?

在这里,每个键值对都经过管道。使用 GetEnumerator() 方法的主要目的是将 PowerShell 对象展开为其各个元素。

结论——PowerShell 中的哈希表

在本文中,我们探讨了 Powershell 中哈希表的一些重要方面。

总结一下:

  • 哈希表是一种轻量级数据结构,用作关联数组以将键映射到值。
  • 它是一种结构化且有效的查找和检索数据的方法。
  • 可以存储列表。
  • 可以在 PowerShell 中创建计算属性。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯