加入两个哈希表来制作一个

Posted

技术标签:

【中文标题】加入两个哈希表来制作一个【英文标题】:Join two hashtables to make one 【发布时间】:2019-01-03 12:13:58 【问题描述】:

我有两个哈希表,我需要比较它们。让我解释一下我的问题:

[hashtable]$User = @
"Jack" = "AdminLA, AdminUSA";
"John" = "AdminAustralia";
"Sarah" = "AdminIceland";
"Arnold" = "AdminUSA";
"Maurice" = "AdminAustralia, AdminCanada";



[hashtable]$Profil = @
"AdminLA" = "P1";
"AdminIceland" = "P2";
"AdminUSA" = "P3";
"AdminCanada" = "P4";
"AdminAustralia" = "P5" ;
"AdminCroatia" = "P6";

我想要这样的结果:

Key         Value
---         -----
Jack        P1, P3
John        P5
Sarah       P2
Arnold      P3
Maurice       P5, P4

实际上,我只有一个值(我没有成功拥有多个值。例如 Jack 必须有 P1 和 P3,而我只有 P1)。

我该如何解决?

我已经试过了:

$User.GetEnumerator() | select Key, @n='Value'; e=$Profil[$_.Value]

$User.GetEnumerator() | %[PSCustomObject]@aKey=$_.Key;bValue=$Profil[$_.Value]

有什么想法吗?

【问题讨论】:

忽略 cmets 并且不承认 @robdy 的有用答案不会让你成为朋友。你应该接tour,不要再问the same question。 【参考方案1】:

使用这个表达式

$User.GetEnumerator() | Select-Object Key, @name='Value'; expression=($_.Value -split ", " | Foreach-Object $Profil[$_]) -join ", "

这基本上创建了一个输入值数组,从$Profil 获取每个元素的值,然后从这些值创建一个字符串。

【讨论】:

对不起@Robdy!我忘记回答你了!是的,我在我的脚本中使用了你的表达方式!它的工作很棒!谢谢大家

以上是关于加入两个哈希表来制作一个的主要内容,如果未能解决你的问题,请参考以下文章

具有两种 O(1) 查找的数据结构。哈希表?

prolog中的哈希表

349哈希表-两个数组的交集

哈希桶

WebService 中的静态哈希表

redis中的hash