【发布时间】:2010-12-11 02:10:01
【问题描述】:
我们有以下数据结构:
{:a => ["val1", "val2"], :b => ["valb1", "valb2"], ...}
我想把它变成
[{:a => "val1", :b => "valb1"}, {:a => "val2", :b => "valb2"}, ...]
然后回到第一种形式。有漂亮的实现吗?
【问题讨论】:
-
你的意思是
{:a => ["val1", "val2", ...], :b => ["valb1", "valb2", ...], ...}??这样输出将包括,比如说,:c => "valc1", blah blah blah? -
是的,我们也可以有 :c => ["valc1", "valc2"] 然后输出有第一个对象有 :c => "valc1" 和 :c => “valc2”代表第二个对象...此外,每个数组可能有不止 2 个元素。
-
对于笛卡尔积——所有可能组合的结果——见Calculate all variations for Hash of arrays