【问题标题】:Does it have a name? Grouping objects by collections they belong to它有名字吗?按对象所属的集合对对象进行分组
【发布时间】:2011-03-14 07:03:24
【问题描述】:

有一些集合 - 假设每个集合都是开发人员知道的一组编程语言。

{"Alice" => Set["Java", "Python", "C++"], "Bob" => Set["Ruby"], "Charlie" => Set["Ruby", "C++"]}.

我想按它们所属的集合对这些对象进行分组——在这种情况下,获取从共享某些语言知识的开发人员集合到此类语言集合的映射。输入中出现的每种语言都将在此处仅出现一次:

{Set["Alice"] => Set["Java", "Python"], Set["Alice", "Charlie"] => Set["C++"], Set["Bob", "Charlie"] => Set["Ruby"]}

此操作的类型为Hash[A, Set[B]] => Hash[Set[A], Set[B]]。 (在实践中,最有可能使用普通数组而不是集合,我在这里使用集合表示顺序无关紧要并且没有重复)

我不是在问如何编写这个操作(当然,如果你知道一种特别优雅的方式,请随时分享)——我想知道它是否有名字。它似乎很常见,但我想不出任何东西。

【问题讨论】:

    标签: data-structures language-agnostic


    【解决方案1】:

    “反向映射”?

    【讨论】:

    • "reverse mapping" 建议更像Hash[A,B] => Hash[B,A],实际上在 DNS 上下文中以这种方式使用 - 通常 DNS 系统类似于 Hash[Hostname,IP],但“反向映射”功能使其行为类似于Hash[IP,Hostname](简化事情)。
    猜你喜欢
    • 2018-09-17
    • 1970-01-01
    • 2023-02-05
    • 1970-01-01
    • 2020-12-28
    • 2022-01-21
    • 2015-12-31
    相关资源
    最近更新 更多