我正在寻找一种数据结构来保留同义词。我想要“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/