草庐IT

ruby - 根据另一个散列中的值替换散列值

给定两个散列,我试图用第二个散列也具有的键替换第一个散列中的值。具体来说,我有这两个哈希值:data={"study"=>"LucidStudy","name"=>"LucidPlan","studyWillBe"=>"Combination"}conditions={"study"=>"((current))"}我希望data更新其"study"key,因为conditions具有该key。我希望data像这样结束:data={"study"=>"((current))","name"=>"LucidPlan","studyWillBe"=>"Combination"}我做到了这一点

ruby - 是否有针对 "reshaping"散列的内置 Ruby 方法?

我有从数据库中检索到的哈希值:original_hash={:name=>"Luka",:school=>{:id=>"123",:name=>"Ieperman"},:testScores=>[0.8,0.5,0.4,0.9]}我正在编写一个API并希望向客户端返回一个稍微不同的哈希值:result={:name=>"Luka",:schoolName=>"Ieperman",:averageScore=>0.65}这不起作用,因为reshape方法不存在。它是否以其他名称存在?result=original_hash.reshapedo|hash|{:name=>hash[:nam

ruby-on-rails - ruby 根据不同键的相同值删除散列的散列

我有一个像这样的散列:authors={"7"=>{"id"=>"60"},"0"=>{"id"=>"60"},"1"=>{"id"=>"99"},"8"=>{"id"=>"99"},"15"=>{"id"=>"19"}}我想合并每个散列,其中该散列中散列的id是重复的(或者删除每个第二个散列具有相同散列id的散列)。在这种情况下,我想结束authors={"7"=>{"id"=>"60"},"1"=>{"id"=>"99"},"15"=>{"id"=>"19"}}关于哈希的哈希排序有很多问题,我一直在努力解决这个问题,但我不知道如何实现。 最佳答案

ruby - 增加散列中的值

我有一堆帖子,里面有类别标签。我试图找出每个类别被使用了多少次。我将Rails与mongodb一起使用,但我认为我不需要从数据库中获取类别的出现,因此mongo部分无关紧要。这是我目前的情况@recent_posts=current_user.recent_posts#returnsthe10mostrecentposts@categories_hash={'tech'=>0,'world'=>0,'entertainment'=>0,'sports'=>0}@recent_postsdo|cat|cat.categories.eachdo|addCat|@categories_has

ruby-on-rails - 将 "complex"JSON 数据转换为散列

我正在使用RubyonRails3,我正在尝试转换以下JSON数据"{\"errors\":{\"base\":\"Invalidfield.\"}}"以这种方式访问​​哈希:@internal_test1[:errors][:base]#=>"Invalidfield"怎么做?更新@internal_test1="{\"errors\":{\"base\":\"Invalidemail/passwordcombination.\"}}"test=ActiveSupport::JSON.decode(@internal_test1)@internal_test2=test["error

ruby - 允许 Ruby 1.9 的散列语法吗?

虽然我使用Ruby1.9有一段时间了,但我最近才发现现在支持的更新的哈希语法:settings={host:"localhost",port:5984}相对于:settings={"host"=>"localhost"}我喜欢它与JavaScript的对象表示法的相似性,并且看起来有点像JSON,所以我可能会转而在我的所有库中使用它,但我仍然想支持其他用户和我自己的项目,它们采用旧语法.所以这真的归结为一个相当简单的问题,即必须同时测试符号和字符串。有没有一种简单的方法可以将这两行作为一个来完成?returntrueifsettings["host"]andsettings["db"]

ruby - 散列成分组数组

我对ruby不是很有经验,所以我正在努力格式化一段数据。我有这个散列,其中包含一些具有相同值的键,例如:{"key"=>"value1","key2"=>"value2","key3"=>"value3","key4"=>"value1","key5"=>"value2"..}我想把它变成一个包含按值分组的键的数组[["key","key4"],["key2","key5"],["key3"]] 最佳答案 new_hash={}hash.eachdo|key,value|new_hash[value]||=[]new_hash[va

ruby - 使用 Ruby 将 SQL 结果转换为带有 ID 键的散列

我有以下数组(SQL结果):[{:id=>1,:field1=>"one",:field2=>"two"},{:id=>2,:field1=>"one",:field2=>"two"},...]我想要的是:{1=>{:field1=>"one",:field2=>"two"},2=>{:field1=>"one",:field2=>"two"},...}现在我喜欢以下内容:data={}result.eachdo|row|data[row[:id]]={:field1=>row[:field1],:field2=>row[:field2]}end我绝对确定那是错误的方式。用Ruby做这

ruby - 在子类化 Ruby 散列时如何重写 []= 方法?

我有一个扩展哈希的类,我想跟踪哈希键何时被修改。覆盖[key]=语法方法以完成此操作的正确语法是什么?我想插入我的代码,然后调用父方法。C方法可以做到这一点吗?我从文档中看到底层方法是rb_hash_aset(VALUEhash,VALUEkey,VALUEval)如何将其分配给括号语法? 最佳答案 方法签名为def[]=(key,val),super调用父方法。这是一个完整的例子:classMyHash 关于ruby-在子类化Ruby散列时如何重写[]=方法?,我们在StackOver

ruby - 除了数组值之外,如何使用散列?或者如何创建哈希线?

尝试使用除代码中的许多值之外的哈希H1​​=Hash[:state=>1,code=>2]H2=Hash[:state=>10,code=>20]这项工作:H1.except(:state,:code)Hash->H1将不包含值。好的但是下面是行不通的H1.expect(H2.keys)哈希->H1将包含值。不问题是因为ruby​​把order.keys和BRACKET放在了一起。我尝试从数组生成但也不起作用 最佳答案 你所做的相当于调用H1.except([:state,:code])。如果H1.except(:state,:co