Fab*_*bio 4 ruby arrays hash permutation ruby-1.9
有没有快速的方法来获得给定哈希的(随机)排列?例如,对于数组,我可以使用示例方法
ruby-1.9.2-p180 :031 > a = (1..5).to_a
=> [1, 2, 3, 4, 5]
ruby-1.9.2-p180 :032 > a.sample(a.length)
=> [3, 5, 1, 2, 4]
Run Code Online (Sandbox Code Playgroud)
对于哈希,我可以在哈希键上使用相同的方法并使用
ruby-1.9.2-p180 :036 > h = { 1 => 'a', 2 => 'b', 3 => 'c' }
=> {1=>"a", 2=>"b", 3=>"c"}
ruby-1.9.2-p180 :037 > h.keys.sample(h.length).inject({}) { |h2, k| h2[k] = h[k]; h2 }
=> {3=>"c", 2=>"b", 1=>"a"}
Run Code Online (Sandbox Code Playgroud)
但这太丑了.哈希是否有任何"样本"方法可以避免所有代码?
更新正如@Michael Kohl在评论中所指出的,这个问题仅对ruby 1.9.x有意义.因为在1.8.x中Hash是无序的,所以没有办法做到这一点.
| 归档时间: |
|
| 查看次数: |
1904 次 |
| 最近记录: |