Tag: 哈希表

在哈希中有条件地包含键值对

有人可以帮我缩短以下方法吗? 我从这开始,我很喜欢这个: def self.some_hash { “foo” => “bar” } end 现在我想添加一个可选键。 我能想到的最简洁的语法是这样的: def self.some_hash(some_key=nil) answer = { “foo” => “bar” } answer[some_key] = “yucky, long-winded syntax” if some_key answer end 修改后的方法有效,但我对虚拟墨水的浪费感到不满意。 有没有办法缩短它? 我意识到可以在哈希文字上使用三元运算符,但这会强制(我认为)在条件的每个分支上重复”foo” => “bar”对,这也略微小于原始状态。

Ruby维护Hash插入顺序

我正在寻找一种方法来维护我在Ruby中使用的哈希的插入顺序。 我的数据来自数据库,并且已经按照我想要的方式进行分组/排序,但Ruby不保证在我的1.8.4版本中维护Hash中的顺序。 这有什么解决方法吗? 如果没有,我可以创建自定义比较器吗? 这是哈希: { “February”=>[0.5667, 14.6834, 79.7666, 261.8668, 342.1167, 723.517], “March”=>[0.0, 26.4667, 554.45, 681.3164, 2376.0668, 10353.0358], “May”=>[2.75, 34.6666, 342.1831, 1331.8999, 1589.617, 9282.9662], “July”=>[1.9, 2.3666, 59.45, 302.1501, 554.1652, 5195.0839], “June”=>[0.15, 24.2166, 244.1498, 335.6834, 536.067, 1498.949], “August”=>[0.0, 0.4, 9.3668, 30.7164, 67.7504, 162.0337], “April”=>[0.0, 8.3, 68.9331, 357.9168, 815.9662, 2870.217] } 任何想法都会很棒,谢谢