Tag: 哈希

Ruby-如何构建多值哈希?

这是我的代码片段: something_1.each do |i| something_2.each do |j| Data.each do |data| date = data.attribute(‘TIME_PERIOD’).text value = data.attribute(‘OBS_VALUE’).text date_value_hash[date] = value end end end 我想捕获一个日期中的所有值。 date是我的哈希的关键,它可能有一个日期的多个值。 我怎么能在这里完成呢? 当我使用这一行时: date_value_hash[date] = value 每次循环迭代时,值都会被替换。 但是,我想在每个日期累积date_value_hash中的所有值,即我想动态构建值。 目前我得到这个: {“1990″=>”1”, “1994”=>”2″, “1998”=>”0″} 但是,我想要这样的事情: {“1990″=>”1,2,3,4,5,6”, “1994”=>”1,2,3,4,5,6″, “1998”=>”1,2,3,4,5,6″} 任何人都知道如何实现这一目标?

格式化数据哈希的最有效方法是什么?

我正在使用这个哈希数组来批量插入到mongo DB中。 通过解析文本文件来填充每个哈希,因此字段的格式是不可预测的格式。 它可能看起来像: {date => “March 5”, time => “05:22:21”, first_name = “John”, middle_initial = “JJ”, …} 我会有一系列格式化function。 也许吧: def format_date ..convert if needed.. end def format_time … end 我如何在各种记录上调用格式化函数? 我可以看到做一些lambda调用,我遍历散列并调用format_record_name函数,但并非所有记录都有格式化函数。 例如,first_name记录上面不需要一个。 有任何想法吗?

如何在Ruby中的哈希列表中为每个键提取更大的值

我可以想象有一种简单的方法可以做到这一点而不是使用许多变量和状态。 我只想获得散列列表中每个键的最高值 例如: [{1=>19.4}, {1=>12.4}, {2=>29.4}, {3=>12.4}, {2=>39.4}, {2=>59.4}] 结果 [{1=>19.4}, {3=>12.4}, {2=>59.4}]

大厨11:任何方式将属性转换为ruby哈希?

我正在使用chef属性为我的服务生成配置。 但是,在某些时候,我需要将属性mash转换为简单的ruby哈希。 这曾经在Chef 10中正常工作: node.myapp.config.to_hash 但是,从Chef 11开始,这不起作用。 只有属性的顶级转换为散列,然后嵌套值保持不可变的mash对象。 修改它们会导致这样的错误: Chef :: Exceptions :: ImmutableAttributeModification ——————————————- —–如果未指定要设置的优先级,则节点属性是只读的。 要设置属性,请使用类似`node.default [“key”] =“value”’的代码 我已经尝试了很多方法来解决这个问题,但这些方法都不起作用: node.myapp.config.dup.to_hash JSON.parse(node.myapp.config.to_json) json解析hack,看起来应该很好用,导致: JSON::ParserError unexpected token at ‘”#”‘ 有没有任何实际可靠的方法,在每个cookbook中包含嵌套解析函数,将属性转换为简单,普通,好的旧ruby哈希?

.hash字符串方法如何工作?

我只是ruby的新手。 我见过一个字符串方法(String).hash。 例如,在irb ,我尝试过 >> “mgpyone”.hash 回报 => 144611910 这个方法有什么用?

在Ruby中将哈希转换为字符串

假设我们有一个哈希: flash = {} flash[:error] = “This is an error.” flash[:info] = “This is an information.” 我想将其转换为字符串: “This is an error.This is an information”. 在漂亮的一个class轮;) 我找到了类似的东西: flash.to_a.collect{|item| “#{item[1]}”}.join 这解决了我的问题,但也许在哈希表类中有更好的解决方案?

访问由键数组指定的嵌套哈希元素

我试图获得一个通用的解决方案来解决在给定一组键值的情况下访问嵌套哈希中的元素的问题,例如: hash = { “a” => { “b” => ‘foo’ }} array = [“a”, “b”] function(array) => “foo” 我猜这可能是一个单行。 它也与这个问题密切相关: Ruby将数组转换为嵌套哈希

不能使用数组作为Ruby Hash的默认值?

我正在向Hash键添加项目。 我期待得到这样的结构: { ‘a’ : [1], ‘b’ : [2, 3, 4] } 我使用Array来初始化Hash。 irb> hash = Hash.new([]) => {} 然后开始使用它: irb> hash[‘a’] < [1] irb> hash[‘b’] < [1, 2] 但事实certificate: irb> hash => {}

调用Procs的bizzare方式?

我找到了一个示例代码: def callback(procs) procs[:var_1] puts “Proceed” procs[:var_2] end callback(:var_1 => Proc.new {block_1}, :var_2 => Proc.new {block_2}) 我无法弄清楚方括号[:var_1]含义。 这是一种调用Porc / lambda的方法吗? 我也很困惑,因为在类似Hash的方式创建Procs: callback(:start => Proc.new {puts “The begining of the CALLBACK”}, :finish => Proc.new {puts “The ending of the CALLBACK”}) 对此事我感激不尽。

以类似表格式输出哈希值

我需要将哈希输出到表格中。 数据有一个名为students的数组,其中包含带键”first_name” , “last_name”和”grade_level”哈希值。 这是我的代码。 students = [] # Dummy Inputs. students = [ { “first_name” => “Bob”, “last_name” => “Builder”, “grade_level” => 4 }, { “first_name” => “Test”, “last_name” => “Buida”, “grade_level” => 3 }, { “first_name” => “Senior”, “last_name” => “June”, “grade_level” => 5 }, { “first_name” => “John”, “last_name” => “Smith”, “grade_level” […]