Tag: 法哈希

Ruby .reject! vs .delete_if

作为Ruby的新手,我对.reject之间的区别有疑问! 和.delete_if处理哈希和数组时的方法。 如果只是想摆脱某些对象,那么这些方法之间是否存在function上的差异? 有理由使用一个而不是另一个吗? 谢谢! 编辑我已经阅读了文档……我想我应该在原来的问题中更加清楚。 我想知道更多关于效率的差异。 他们删除项目的方式有何不同? (再次,忽略返回值。我明白这是一个区别。谢谢!)

在Ruby中哈希“has_key”的复杂性

我有一个哈希vars = {“a” => “Name”, “b” => “Address” , “c” => “Phone”} 。 我想检查一下这行的性能: vars.has_key(:b)? 是O(1)还是O(哈希的大小)?

在Ruby中将大型哈希划分为N个较小哈希的最有效方法是什么?

问题 我正在研究涉及分片的问题。 作为问题的一部分,我需要找到以两个或更多部分划分大型Ruby哈希(> 200,0000个条目)的最快方法。 有没有非O(n)方法? 是否有非Ruby即C / C ++实现? 请不要使用将哈希转换为数组并重建N个不同哈希的简单方法回答示例。 我担心的是Ruby太慢而无法完成这类工作。 最初的方法 这是我尝试的第一个解决方案。 吸引人的是: 它不需要在哈希中盲目循环 它不需要管理计数器来在分片中均匀地分配成员。 它短而整洁 好吧,它不是O(n),但它依赖于标准库中的方法,我认为这比编写自己的Ruby代码要快。 pivot = s.size / 2 slices = s.each_slice(pivot) s1 = Hash[*slices.entries[0].flatten] s2 = Hash[*slices.entries[1].flatten] 更好的解决方案 马克和迈克非常友好地提出方法。 我不得不承认Mark的方法感觉不对 – 它完全按照我不想要的方式 – 它循环了所有的成员并评估了有条件的情况 – 但是因为他花时间去做评估,我想我应该尝试类似的方法和基准测试。 这是我的方法的改编版本(我的密钥不是数字所以我不能逐字逐句采用他的方法) def split_shard(s) shard1 = {} shard2 = {} t = Benchmark.measure do n […]

在Ruby中,在Hash中使用标识符后冒号是什么意思?

我正在学习Factory Girl,我看到了这段代码: factory :post do association :author, factory: :user, last_name: “Writely” end 为什么factory和last_name的末尾都有冒号?

无法使用ruby哈希的点语法

我正在使用net/http从Yahoo Placemaker API中提取一些json数据。 收到响应后,我在响应上执行JSON.parse 。 这给了我一个看起来像这样的哈希: {“processingTime”=>”0.001493”, “version”=>”1.4.0.526 build 111113”, “documentLength”=>”25”, “document”=>{“administrativeScope”=>{“woeId”=>”2503863”, “type”=>”Town”, “name”=>”Tampa, FL, US”, “centroid”=>{“latitude”=>”27.9465”, “longitude”=>”-82.4593″}}, “geographicScope”=>{“woeId”=>”2503863”, “type”=>”Town”, “name”=>”Tampa, FL, US”, “centroid”=>{“latitude”=>”27.9465”, “longitude”=>”-82.4593″}}, “localScopes”=>{“localScope”=>{“woeId”=>”2503863”, “type”=>”Town”, “name”=>”Tampa, FL, US (Town)”, “centroid”=>{“latitude”=>”27.9465”, “longitude”=>”-82.4593″}, “southWest”=>{“latitude”=>”27.8132”, “longitude”=>”-82.6489″}, “northEast”=>{“latitude”=>”28.1714”, “longitude”=>”-82.2539″}, “ancestors”=>[{“ancestor”=>{“woeId”=>”12587831”, “type”=>”County”, “name”=>”Hillsborough”}}, {“ancestor”=>{“woeId”=>”2347568”, “type”=>”State”, “name”=>”Florida”}}, {“ancestor”=>{“woeId”=>”23424977”, “type”=>”Country”, “name”=>”United States”}}]}}, “extents”=>{“center”=>{“latitude”=>”27.9465”, “longitude”=>”-82.4593″}, “southWest”=>{“latitude”=>”27.8132”, “longitude”=>”-82.6489″}, “northEast”=>{“latitude”=>”28.1714”, “longitude”=>”-82.2539″}}, “placeDetails”=>{“placeId”=>”1”, “place”=>{“woeId”=>”2503863”, […]