在rails中,如果值是嵌套数组,如何总计哈希值

时间:2018-03-03 11:13:40

标签: ruby-on-rails

给出一个如下所示的哈希:

{
   "one":[ [ 46, 51 ], [ 46 ], [ 48 ] ],
   "two":[ [ 50, 51 ], [ 46, 51 ], [ 46, 51 ] ]
}

如何在Rails中映射它以便我们可以获得所有数组中的项目总数?这样我们就可以得到这个结果:

{
   "one": 4,
   "two": 6
}

我对使用map感到有点困惑,因为它不会让我保留密钥。

3 个答案:

答案 0 :(得分:3)

您也可以使用它来保留键

echo "<option value='".$row["type_sport"]."'> ".$row["type_sport"]."</option>";

答案 1 :(得分:2)

使用hash.transform_values { |v| v.flatten.count } #=> {:one=>4, :two=>6}

class MySentences(object):
    def __init__(self, dirname):
        self.dirname = dirname

    def __iter__(self):
        for fname in os.listdir(self.dirname):
            for line in open(os.path.join(self.dirname, fname)):
                yield line.split()

答案 2 :(得分:1)

通常,您只需使用flatten来合并嵌套数组。因此,如果您想要更新现有的哈希,您可以

your_hash.each { |key, value| your_hash[key] = value.flatten.count }

否则我会说你做了

new_hash = {}
your_hash.each { |key, value| new_hash[key] = value.flatten.count }