有没有一个哈希实现不会记住键值?我必须做一个巨大的散列,但我不关心密钥是什么。
编辑:
Ruby的散列实现存储键的值。我希望hash不会记住键的值。它只是使用散列函数来存储您的值,而忘记了键。这样做的原因是,我需要对大约5 gb的数据进行散列,并且我不关心创建它后的键值是什么。我只希望能够根据其他键查找这些值。
编辑编辑:
这种语言有点令人困惑。关于key的值,我的意思是:
hsh‘’value‘=数据
我不关心散列函数在散列中存储数据后的'value‘是什么。
编辑^3:
好的,这就是我要做的:我正在为一组多基因生成每个35个字母的(核苷酸) kmer。每个基因都有一个ID。散列如下:
kmers = { 'A...G' => [1, 5, 3], 'G...T' => [4, 9, 9, 3] }
因此,散列键是kmer,值是一个数组,其中包含具有该kmer的基因/string的ID。
我在另一个数据集中查询kmer的散列,以快速找到匹配的基因。我不关心哈希键是什么,我只需要从kmer中获取数字数组。
>> kmers['A...G']
=> [1, 5, 3]
>> kmers.keys.first
=> "Sorry Dave, I can't do that"
发布于 2011-05-27 01:53:31
即使有一个奇怪的散列来记录存在(这就是我对这个问题的理解),你可能也不想使用它,因为内置的散列会更简单,更快,不需要gem,等等。
h[k] = k
...and今天到此为止..。
发布于 2011-05-27 04:44:15
我猜你想要一个,尽管它存储唯一的键并且没有值。它具有从散列中快速查找的时间。Set包含在标准库中。
require 'set'
s = Set.new
s << 'aaa'
p s.merge(['ccc', 'ddd']) #=> #<Set: {"aaa", "ccc", "ddd"}>
发布于 2011-05-27 07:05:34
我假设5 gb的字符串是一个基因组,kmer是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
https://stackoverflow.com/questions/6142642
复制相似问题