ruby - 同义词的数据结构

标签 ruby database data-structures

我正在寻找一种数据结构来保留同义词。我想要“Washington D.C.”、“Washington DC”或“Washington D.C”来关联“Washington”。类似于 List => Value 结构。

我有一项服务,如果在特定网站上提到他们的城市,我会向用户发送电子邮件。当他们注册时,他们输入他们的电子邮件和城市。然而,有些人会输入“Washington”,有些人会输入“Washington D.C.”。现在我希望将这些放在同一个“桶”中,如果网站上提到“华盛顿特区”或“华盛顿”,我会向所有这些人发送电子邮件。

最佳答案

class Synonyms
  def initialize( *syns )
    @all = []
    @idx = {}
    syns.each{ |syn| self << syn }
  end
  def <<( syn )
    p syn
    unless @idx.include?(syn)
      @all << syn
      @idx[syn] = @all  
    end
  end
  def []( syn )
    @idx[syn]
  end
end

wash = Synonyms.new "Washington DC", "Washington", "Washington D.C."

p wash["Washington"]    #=> ["Washington DC", "Washington", "Washington D.C."]
p wash["Washington DC"] #=> ["Washington DC", "Washington", "Washington D.C."]
p wash["Nope"]          #=> nil

接下来,创建一个将每个已知同义词映射到其列表的散列,或循环遍历它们,或其他任何方式。

关于ruby - 同义词的数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16183637/

相关文章:

java - 从 Java 读取 COBOL 数据结构

ruby-on-rails - Mongodb:使用前需要了解什么?

php - Zend 子查询参数

ruby-on-rails - Rails Amazon S3 如何创建文件上传进度条?

MySQL导入: PhpMyAdmin won't let me access 'information_schema'

mysql - 如何将一个表左连接n次?如果可能的话,使用 ZendDb?

java - 如何优化Java中计算Pronic数的解决方案

algorithm - 设计一个可以搜索具有 2 个属性的对象的数据结构

ruby - 如何实现基本的 Enumerator 类?

php - 2011 Web 脚本语言和动态重新加载