问题描述
在 Python 中,您可以使用过滤器函数执行列表理解之类的操作,以处理字典列表并找到您想要的:
warranty_info = [warranty for warranty in warranty_info if
args.warranty_keyword.lower() in warranty['ServiceLevelDescription'].lower()]
warranty_info 是字典列表,ServiceLevelDescription
是我要过滤的字段。结果是一个新的字典列表,其中只有我想要的字典。在本例中,我要查找在 warranty_keyword
字段中包含用户提供的单词 (ServiceLevelDescription
) 的所有词典。
我知道如何使用 foreach 循环在 PowerShell 中完成此操作 - 是否有像 Python 那样“更干净”的方法?
解决方法
我想通了 - 它实际上比 Python 更优雅(Grant 的意见):
$WarrantyInfo | Where-Object 'ServiceLevelDescription' -Match ^*pro*
语法中有很多隐含的内容。这将搜索 HashTables 列表,并为每个人提取键 ServiceLevelDescription
- 之后它将检查是否与您在 -Match
开关后放置的任何内容匹配。