草庐IT

HashTable

全部标签

ruby - 在哈希的键数组中追加元素

查看我的Ruby代码:h=Hash.new([])h[0]=:word1h[1]=h[1]输出是:Hash={0=>:word1,1=>[:word2,:word3],2=>[:word2,:word3]}我希望有Hash={0=>:word1,1=>[:word2],2=>[:word3]}为什么要附加第二个哈希元素(数组)?如何将新数组元素附加到第三个哈希元素? 最佳答案 如果您提供单个值作为Hash.new的参数(例如Hash.new([]),完全相同的对象将用作每个缺失键的默认值。这就是您所拥有的,那是你不想要的。您可以改用

ruby - 如何从文件加载哈希?

有没有Ruby工具可以让我加载格式为(Abbreviated=>Abr)的缩写文件?然后我需要从另一个文件中读取每个单词。如果单词与缩写中的单词匹配,我需要将其更改为缩写词。我想我可以使用哈希,但我不知道如何从文件加载它。 最佳答案 YAML是一种非常通用的数据存储格式,可以在应用程序和编程语言之间传输。JSON是另一种替代方法,这在网站中很常见。我将YAML用于配置文件之类的内容,因为它非常容易读取和修改。例如,这个Ruby结构:irb(main):002:0>foo={'a'=>1,'b'=>[2,3],'c'=>{'d'=>4

ruby - 如何增加散列中未初始化键的值?

如果我尝试增加哈希中尚不存在的键的值,就像这样h=Hash.newh[:ferrets]+=1我收到以下错误:NoMethodError:undefinedmethod`+'fornil:NilClass这对我来说很有意义,而且我知道这一定是一个非常简单的问题,但我在SO上找不到它。如果我什至事先不知道我将拥有哪些key,我该如何添加和递增此类key? 最佳答案 可以在构造函数中设置hash的默认值h=Hash.new(0)h[:ferrets]+=1ph[:ferrets]请注意,设置默认值有一些缺陷,因此您必须谨慎使用。h=Ha

Ruby 维护哈希插入顺序

我正在寻找一种方法来维护我在Ruby中使用的哈希的插入顺序。我的数据来自数据库,并且已经按照我想要的方式进行分组/排序,但Ruby不保证在我的1.8.4版本中保持哈希顺序。有什么解决方法吗?如果没有,我可以创建自定义比较器吗?这是哈希:{"February"=>[0.5667,14.6834,79.7666,261.8668,342.1167,723.517],"March"=>[0.0,26.4667,554.45,681.3164,2376.0668,10353.0358],"May"=>[2.75,34.6666,342.1831,1331.8999,1589.617,9282.

ruby - 在散列中有条件地包含键值对

关闭。这个问题是off-topic.它目前不接受答案。想改进这个问题吗?Updatethequestion所以它是on-topic用于堆栈溢出。关闭10年前。Improvethisquestion有人可以帮我缩短下面的方法吗?我从这个开始,我非常喜欢它:defself.some_hash{"foo"=>"bar"}end现在我想添加一个可选键。我能想到的最简洁的语法是:defself.some_hash(some_key=nil)answer={"foo"=>"bar"}answer[some_key]="yucky,long-windedsyntax"ifsome_keyanswer

javascript - 关联数组是否像哈希表一样执行?

想象一下,您在JavaScript中有一个关联数组:varhashTable={};hashTable["red"]="ff0000";hashTable["green"]="00ff00";hashTable["blue"]="0000ff";当您检索这样的值时会发生什么:varblue=hashTable["blue"];性能是否与其他语言的哈希表相似?我的意思是,是否存在用于确定属性位置的实际哈希函数,或者是否存在循环搜索,例如:for(varcolorinhashTable){if(hashTable.hasOwnProperty(color)){//lookformatchi

javascript - 在 Javascript 中使用 Map over Object 有什么缺点吗?

与ES6的Map()相比,使用Object有什么明显的好处吗?我喜欢将它用于forEach函数。在需要哈希表时选择Map()是一种不好的做法吗? 最佳答案 在Javascript上下文中,Object与Map的情况更像是一个问题,即您是想要通用工具还是专用工具来完成这项工作。Map实际上只是一种特殊的对象(就像您在应用程序中构建的任何其他类型的对象一样。您甚至可以制作自己的Map()模仿ES6map的构造函数)。与其他对象一样,它具有访问其功能的方法。Map的“特色”是成为高效的键值存储。另一方面,Object是Javascript

javascript - 在检查每个键、值对 Javascript 的同时遍历 Hashtable

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:HowdoIenumeratethepropertiesofajavascriptobject?我正在尝试遍历哈希表。但每次运行时我都需要检查值。我将如何使用foreach表来执行此操作?在sudo代码中我想这样做:vartHash={name:n,date:d,labels:l,}foreach(valueintHash){if(tHash.name==somevalue){dosomething};if(tHash.label==somevalue){dosomething};这基本上是我想做的,但不确定

javascript - 根据子对象的特定键值按排序顺序迭代 JavaScript 对象

简短版本:我正在寻找Perl的JavaScript等价物formy$key(sort{$hash{$a}{foo}cmp$hash{$b}{foo}}keys%hash){#dosomethingwith$key}更多细节:我有一个JSON对象,它由一堆其他具有相同属性的JSON对象组成,就像Perl中的哈希散列:例如:varpeopleobj={"0291":{"Forename":"Jeremy","Surname":"Dyson"},"0398":{"Forename":"Billy","Surname":"Bunter"},"6714":{"Forename":"Harry",

multithreading - 引用计数资源的线程安全映射

关闭。这个问题需要更多focused。它目前不接受答案。想要改进这个问题?更新问题,使其只关注editingthispost的一个问题。关闭5年前。Improvethisquestion关于管理资源集合:可通过全局列表(例如HashMap)按名称访问从多个线程同时访问引用计数(Golang缺少“弱引用”;参见https://groups.google.com/forum/#!topic/golang-nuts/PYWxjT2v6ps)例子:vartheListtMap//global//inthreadA,B,CetcaThing:=theList.ref("aThing")//ife