Tag: hash

在使用Ruby的YAML哈希中使用浮点数是否安全?

如果我有一个像YAML文件 — 2.1: my product version 没有任何引号,Ruby会将2.1视为Float(至少在Syck下 – 我不确定Psych)。 使用Float作为哈希密钥是否有任何风险,只要密钥的所有其他出现都来自YAML文件或来自Ruby的文字?

将哈希数组转换为数组

我有一个哈希数组,我需要在新数组中使用哈希值。 哈希的arrays看起来像这样,有几千个。 array = [{:code=>”404″}, {:code=>”302″}, {:code=>”200″}] 我试图查看它,但只发现了如何从哈希转换。 我该怎么做呢?

从/向JSON API客观化Ruby Hashes

我刚刚发布了一个ruby gem来使用一些基于HTTP API的JSON: https://github.com/solyaris/blomming_api 我的naif ruby​​代码只是将API端点(json_data)返回的复杂/嵌套JSON数据结构转换为ruby Hashes(hash_data),以一对一的扁平转换(JSON到ruby散列,反之亦然)。 达的很好,但…… 我想编程接口更“高级”。 也许为每个端点设置类资源,但我对智能实现感到困惑。 让我用抽象代码解释一下。 假设我有一个API接收的复杂/嵌套JSON,通常是一个哈希数组,递归嵌套如下(想象示例): json_data = ‘[{ “commute”: { “minutes”: 0, “startTime”: “Wed May 06 22:14:12 EDT 2014”, “locations”: [ { “latitude”: “40.4220061”, “longitude”: “40.4220061” }, { “latitude”: “40.4989909”, “longitude”: “40.48989805” }, { “latitude”: “40.4111169”, “longitude”: “40.42222869” } ] } }, { “commute”: { “minutes”: 2, “startTime”: […]

在Ruby中,如何为嵌套哈希设置默认值?

我最近在寻找一种在Ruby中正确创建和使用嵌套哈希的方法。 我及时找到了Paul Morie的解决方案 ,他回答了自己的问题: hash = Hash.new { |h,k| h[k] = {} } hash = Hash.new { |h,k| h[k] = {} } 我立即去使用它,很高兴报告它有效。 但是,正如标题所说,我希望“辅助”,“内部”哈希默认返回0 。 我知道您可以在其构造函数(“ Hash.new(0) ”)或使用.default (“ hash.default(0) ”)中定义散列的默认返回值。 但是你如何用哈希中的哈希来做到这一点?

从Ruby中的哈希列表创建嵌套哈希

我有一组类别及其值存储为哈希列表: r = [{:A => :X}, {:A => :Y}, {:B => :X}, {:A => :X}, {:A => :Z}, {:A => :X}, {:A => :X}, {:B => :Z}, {:C => :X}, {:C => :Y}, {:B => :X}, {:C => :Y}, {:C => :Y}] 我想得到每个值的计数加上它的类别作为这样的哈希: {:A => {:X => 4, :Y => 1, :Z => 1}, :B […]

Ruby:基于多个条件从深层嵌套的JSON结构中提取

我想选择marketName == ‘Moneyline’任何marketId ,但只选择countryCode == ‘US’ || ‘GB’ countryCode == ‘US’ || ‘GB’或eventName.include?(‘ @ ‘) 。 ( @之前和之后的space )。 我尝试了不同的地图和选择组合,但有些节点没有countryCode ,这让我感到countryCode 。 这是源代码,但它可能是一个样本: {“currencyCode”=>”GBP”, “eventTypes”=>[ {“eventTypeId”=>7522, “eventNodes”=>[ {“eventId”=>28024331, “event”=> {“eventName”=>”EWE Baskets Oldenburg v PAOK Thessaloniki BC” }, “marketNodes”=>[ {“marketId”=>”1.128376755”, “description”=> {“marketName”=>”Moneyline”} }, {“marketId”=>”1.128377853”, “description”=> {“marketName”=>”Start Lublin +7.5”} }}}]}, {“eventId”=>28023434, “event”=> {“eventName”=>”Asseco Gdynia v Start Lublin”, […]

Ruby:如何检查哈希定义中是否存在变量

我是Ruby的新手。 有没有办法做到以下几点? hash = { :key1 => defined? value1 ? value1 : nil, :key2 => defined? value2 ? value2 : nil } puts hash[:key1] # outputs: [“expression”] 上面的代码存储表达式,而不是值 (如果已定义)或nil (如果未定义)。

Ruby,创建没有现有键值的数组

我有一系列哈希; [{“price” => “123”, “amount” => “987”}, {“price” => “432”, “amount” => “13”}] 我想创建哈希数组; [[“123”, “987”], [“432”, “13”]] 我试过hash.map(&:first).map(&:last)和hash.map(&:first).map(&:last) 我无法实现我的目标。

如果它们具有相同的值,则在散列数组中求和值

我在这篇文章中看到了这段代码,因为我试图根据一些标准对哈希数组中的值求和。 Rails在哈希数组中求和值 array = [ {loading: 10, avg: 15, total: 25 }, {loading: 20, avg: 20, total: 40 }, {loading: 30, avg: 25, total: 55 } ] sum = Hash.new(0) array.each_with_object(sum) do |hash, sum| hash.each { |key, value| sum[key] += value } end # => {:loading=>60, :avg=>60, :total=>120} 我正在尝试做什么,我不知道如何,如果加载和avg在这个数组中出现多次相同的值,则总和为key。 例如。 array = [ {loading: 10, […]

如何测试秩序意识的哈希平等

Ruby 1.9.2将顺序引入哈希。 考虑到顺序,我如何测试两个哈希值是否相等? 鉴于: h1 = {“a”=>1, “b”=>2, “c”=>3} h2 = {“a”=>1, “c”=>3, “b”=>2} 我想要一个比较运算符,它为h1和h2返回false 。 以下两点都不起作用: h1 == h2 # => true h1.eql? h2 # => true