【问题标题】:How to get the size of each value of a hash如何获取哈希的每个值的大小
【发布时间】:2010-01-24 19:39:36
【问题描述】:

我有一个哈希,每个值都是一个数组。

我想构建一个包含每个值/数组大小的新数组。

例子:

哈希

{"A"=>["1", "2", "3"], "B"=>["b", "toto"]}

结果

[3, 2]

感谢您的帮助

【问题讨论】:

    标签: ruby hash arrays


    【解决方案1】:
    some_hash.values.map { |v| v.size }
    

    在 1.9 中,我相信你可以做到:

    some_hash.values.map(&:size)
    

    【讨论】:

    • 我认为你可以跳过值,直接做some_hash.map {|k,v| v.size }
    • @kejadlen:是的,我认为我最喜欢你的语法
    • 顺便说一句:习惯上使用_ 作为仅用于解构绑定但实际上并未使用的变量的名称。 (这可以追溯到具有模式匹配的语言,例如 Haskell、ML 或 Scala,其中 _ 实际上是类似于 shell 中的 * 的特殊通配符模式。)所以,我会使用 some_hash.values.map(&:size)some_hash.map {|_, v| v.size } .后者仅在非 Rails Ruby 1.8.6 中,否则我更喜欢前者,但这只是个人喜好。
    • 为了清楚起见,我认为hash.values.map 更合适。 hash.map 可能更快,但我不认为它更清楚。除非这是一个核心(经常执行)功能,否则 clear 应该很快。
    【解决方案2】:

    我愿意:

    h.collect{|v|v[1].size}
    

    【讨论】:

      猜你喜欢
      • 2017-02-16
      • 1970-01-01
      • 2012-01-09
      • 1970-01-01
      • 2015-09-28
      • 2021-06-19
      • 1970-01-01
      • 2013-01-09
      • 2019-04-08
      相关资源
      最近更新 更多