Ruby - 哈希 - 组合

mik*_*927 2 ruby hash

我有一个包含5个元素的哈希,例如:

my_hash = {a: 'qwe', b: 'zcx', c: 'dss', d: 'ccc', e: 'www' }
Run Code Online (Sandbox Code Playgroud)

我的目标是每次循环哈希返回,但没有一个元素,如:

my_hash = {a: 'qwe', b: 'zcx', c: 'dss', d: 'ccc' }
Run Code Online (Sandbox Code Playgroud)

然后

my_hash = {a: 'qwe', b: 'zcx', c: 'dss', e: 'www' }
Run Code Online (Sandbox Code Playgroud)

等等

使用数组我会使用组合方法但是当我使用哈希?我想尽可能轻松地做到这一点

Mar*_*pka 5

您可以将其转换为数组并稍后将其转换回哈希:

my_hash.to_a.combination(4).to_a.sample.to_h
# => {:a=>"qwe", :b=>"zcx", :c=>"dss", :e=>"www"}
my_hash.to_a.combination(4).to_a.sample.to_h
# => {:a=>"qwe", :c=>"dss", :d=>"ccc", :e=>"www"}
Run Code Online (Sandbox Code Playgroud)

  • 你的更好.一个改进:`my_hash.to_a.combination(4).lazy.map(&:to_h).each`来获得OP的循环. (2认同)