首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Ruby:不记住键值的散列

Ruby:不记住键值的散列
EN

Stack Overflow用户
提问于 2011-05-27 01:29:05
回答 5查看 301关注 0票数 1

有没有一个哈希实现不会记住键值?我必须做一个巨大的散列,但我不关心密钥是什么。

编辑:

Ruby的散列实现存储键的值。我希望hash不会记住键的值。它只是使用散列函数来存储您的值,而忘记了键。这样做的原因是,我需要对大约5 gb的数据进行散列,并且我不关心创建它后的键值是什么。我只希望能够根据其他键查找这些值。

编辑编辑:

这种语言有点令人困惑。关于key的值,我的意思是:

hsh‘’value‘=数据

我不关心散列函数在散列中存储数据后的'value‘是什么。

编辑^3:

好的,这就是我要做的:我正在为一组多基因生成每个35个字母的(核苷酸) kmer。每个基因都有一个ID。散列如下:

代码语言:javascript
运行
复制
kmers = { 'A...G' => [1, 5, 3], 'G...T' => [4, 9, 9, 3]  }

因此,散列键是kmer,值是一个数组,其中包含具有该kmer的基因/string的ID。

我在另一个数据集中查询kmer的散列,以快速找到匹配的基因。我不关心哈希键是什么,我只需要从kmer中获取数字数组。

代码语言:javascript
运行
复制
>> kmers['A...G']
=> [1, 5, 3]

>> kmers.keys.first
=> "Sorry Dave, I can't do that"
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-05-27 01:53:31

即使有一个奇怪的散列来记录存在(这就是我对这个问题的理解),你可能也不想使用它,因为内置的散列会更简单,更快,不需要gem,等等。

代码语言:javascript
运行
复制
 h[k] = k

...and今天到此为止..。

票数 2
EN

Stack Overflow用户

发布于 2011-05-27 04:44:15

我猜你想要一个,尽管它存储唯一的键并且没有值。它具有从散列中快速查找的时间。Set包含在标准库中。

代码语言:javascript
运行
复制
require 'set'
s = Set.new
s << 'aaa'
p s.merge(['ccc', 'ddd'])  #=> #<Set: {"aaa", "ccc", "ddd"}>
票数 4
EN

Stack Overflow用户

发布于 2011-05-27 07:05:34

我假设5 gb的字符串是一个基因组,kmer是35个碱基对的核苷酸序列。

我可能会做的事情(稍微简化)是:

代码语言:javascript
运行
复制
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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6142642

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档