Ruby:不记住键值的哈希值

| 是否有不记得键值的哈希实现?我必须进行巨大的哈希处理,但是我不在乎键是什么。 编辑: Ruby \的哈希实现存储键的值。我想要一个不记得键值的哈希值。它只是使用哈希函数来存储您的值而忘记了密钥。这样做的原因是,我需要对约5 gb的数据进行哈希处理,并且不在乎创建后的键值是多少。我只希望能够根据其他键查找值。 编辑编辑: 语言有点混乱。通过键的值,我的意思是: hsh [\'value \'] =数据 在哈希函数将数据存储在哈希中之后,我不在乎“值”是什么。 编辑^ 3: 好的,这就是我正在做的事情:我正在为一组多个基因生成每个35个字母的核苷酸。每个基因都有一个ID。哈希看起来像这样:
kmers = { \'A...G\' => [1, 5, 3], \'G...T\' => [4, 9, 9, 3]  }
因此,哈希键是kmer,值是一个数组,其中包含具有该kmer的基因/字符串的ID。 我正在查询另一个数据集中的kmers哈希以快速找到匹配的基因。我不在乎哈希键是什么,我只需要从kmer中获取数字数组即可。
>> kmers[\'A...G\']
=> [1, 5, 3]

>> kmers.keys.first
=> \"Sorry Dave, I can\'t do that\"
    
已邀请:
即使有一个仅记录存在性的奇数哈希(这就是我对这个问题的理解方式),您也可能不想使用它,因为内置的哈希将更简单,更快,不需要gem等。所以就设置...
 h[k] = k
...并称之为一天...     
我猜您想要一个集合,尽管它存储唯一键而不包含任何值。它具有从哈希开始的快速查找时间。 Set包含在标准库中。
require \'set\'
s = Set.new
s << \'aaa\'
p s.merge([\'ccc\', \'ddd\'])  #=> #<Set: {\"aaa\", \"ccc\", \"ddd\"}>
    
我假设5 gb字符串是一个基因组,而kmers是35个碱基对的核苷酸序列。 我可能会做的事情(略有简化)是:
human_genome = File.read(\"human_genome.txt\")
human_kmers = Set.new
human_genome.each_cons(35) do |potential_kmer|
  human_kmers << potential_kmer unless human_kmers.include?(potential_kmer)
end
unknown_gene = File.read(\"unknown_gene.txt\")
related_to_humans = unknown_gene.each_cons(35).any? do |unknown_gene_kmer|
  human_kmers.include?(unknown_gene_kmer)
end
    
  我必须进行巨大的哈希处理,但是我不在乎键是什么。 那就是所谓的数组。只需使用一个数组。没有键的散列根本不是散列,并且会失去其值。如果您不需要键值查找,则不需要哈希。     
使用数组。数组按整数而不是键索引。 http://www.ruby-doc.org/core/classes/Array.html
a = []
a << \"hello\"
puts a #=> [\"hello\"]
    

要回复问题请先登录注册