草庐IT

Java可恢复哈希计算

全部标签

ruby - 将 CSV 文件转换为哈希数组

我有一个csv文件,一些曲棍球统计数据,例如:09.09.2008,1,HCVitkoviceSteel,BKMladaBoleslav,1:0(PP)09.09.2008,1,HCLasselsbergerPlzen,RIOKNAZLIN,6:209.09.2008,1,HCLitvinov,HCSpartaPraha,3:5我想将它们保存在一个哈希数组中。我没有任何header,我想为每个值添加键,例如"time"=>"09.09.2008"等等。每行都应该像arr[i]一样可访问,每个值都应该像arr[i]["time"]一样可访问。我更喜欢CSV类而不是FasterCSV或sp

Ruby 哈希默认值行为

我正在检查RubyKoans,我点击了#41,我相信它是这样的:deftest_default_value_is_the_same_objecthash=Hash.new([])hash[:one]它无法理解这种行为,所以我用谷歌搜索并找到了StrangerubybehaviorwhenusingHashdefaultvalue,e.g.Hash.new([])很好地回答了这个问题。所以我明白它是如何工作的,我的问题是,为什么默认值(例如递增的整数)在使用过程中不会改变?例如:puts"Textplease:"text=gets.chompwords=text.split("")fre

ruby - 是否有等效于 `Array::sample` 的哈希值?

我想从哈希中提取n个随机键值对。 最佳答案 Hash[original_hash.to_a.sample(n)]对于Ruby2.1,original_hash.to_a.sample(n).to_h 关于ruby-是否有等效于`Array::sample`的哈希值?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/15454632/

arrays - 在 Ruby 中将数组转换为索引哈希

我有一个数组,我想做一个散列,这样我就可以快速询问“数组中有X吗?”。在perl中,有一种简单(快速)的方法可以做到这一点:my@array=qw(123);my%hash;@hash{@array}=undef;这会生成一个哈希值,如下所示:{1=>undef,2=>undef,3=>undef,}我在Ruby中想到的最好的是:array=[1,2,3]hash=Hash[array.map{|x|[x,nil]}]给出:{1=>nil,2=>nil,3=>nil}是否有更好的Ruby方法?编辑1不,Array.include?这不是一个好主意。它慢。它在O(n)而不是O(1)中执行

Ruby:如何计算一个字符串在另一个字符串中出现的次数?

我正在尝试计算一个字符串在另一个字符串中出现的次数。我知道你可以数出一个字母在字符串中出现的次数:string="aabbccddbb"string.count('a')=>2但是如果我搜索'aa'在这个字符串中出现了多少次,我也会得到两次。string.count('aa')=>2我不明白这个。我将值放在引号中,因此我搜索的是确切字符串出现的次数,而不仅仅是字母。 最佳答案 这里有几种方法可以计算给定子字符串在字符串中出现的次数(第一种是我的偏好)。请注意(经OP确认)子字符串'aa'在字符串'aaa'中出现两次,因此出现了五次:

ruby - 无法从同一网络上的另一台计算机访问本地 Sinatra 服务器

我有一个通过textmate运行的简单Sinatra服务器,但我无法从同一网络上的另一台计算机访问。我在MacOS10.8.3上运行Ruby1.9.3p327和Sinatra1.4.1。防火墙已禁用。我在不同的网络和计算机上测试了相同的场景。计算机响应简单的ping,但当我尝试远程登录端口4567时,我无法建立连接。 最佳答案 有一个recentcommittoSinatra出于安全考虑,在开发模式下将默认监听地址从0.0.0.0更改为localhost。为了明确允许从网络访问,您需要在另一种模式(例如生产模式)下运行您的应用程序,

ruby - 确定一个值是否存在于哈希数组中

我有以下内容:array_of_hashes=[{:a=>10,:b=>20},{:a=>11,:b=>21},{:a=>13,:b=>23}]如果:a=>11存在于array_of_hashes中,我将如何查找array_of_hashes.include?似乎不起作用 最佳答案 array_of_hashes.any?{|h|h[:a]==11} 关于ruby-确定一个值是否存在于哈希数组中,我们在StackOverflow上找到一个类似的问题: http

Ruby:更新哈希值最简单的方法是什么?

说:h={1=>10,2=>20,5=>70,8=>90,4=>34}我想将每个值v更改为foo(v),这样h将是:h={1=>foo(10),2=>foo(20),5=>foo(70),8=>foo(90),4=>foo(34)}实现此目标的最优雅方法是什么? 最佳答案 您可以使用update(merge!的别名)使用block更新每个值:hash.update(hash){|key,value|value*2}请注意,我们正在有效地将hash与其自身合并。这是必需的,因为Ruby将调用block来解决任何碰撞键的合并,并使用bl

ruby - 将数组的值加到哈希中

这是我的数组[{:amount=>10,:gl_acct_id=>1,:alt_amount=>20},{:amount=>20,:gl_acct_id=>2,:alt_amount=>30}]我要结果[{:amount=>30}]or{:amount=30}有什么想法吗? 最佳答案 Ruby版本>=2.4.0有一个Enumerable#sum方法。所以你可以这样做arr.sum{|h|h[:amount]} 关于ruby-将数组的值加到哈希中,我们在StackOverflow上找到一个

ruby-on-rails - 如何优雅地对 'nested' 哈希值进行 symbolize_keys

考虑以下代码:hash1={"one"=>1,"two"=>2,"three"=>3}hash2=hash1.reduce({}){|h,(k,v)|h.merge(k=>hash1)}hash3=hash2.reduce({}){|h,(k,v)|h.merge(k=>hash2)}hash4=hash3.reduce({}){|h,(k,v)|h.merge(k=>hash3)}hash4是一个“嵌套”散列,即具有字符串键和类似“嵌套”散列值的散列。Rails中Hash的'symbolize_keys'方法让我们可以轻松地将字符串键转换为符号。但我正在寻找一种优雅方法将所有键(主键