Ruby中按索引配对两个数组并分组生成指定哈希的简洁写法
Ruby 实现目标哈希的简洁写法
有多种比手动循环索引更简洁的实现,以下是最常用的两种Ruby惯用写法:
写法1(兼容性最好,推荐优先使用)
用zip拼接两个数组后直接分组转换,一行代码即可得到结果:
arr1 = [1, 2, 3, 4] arr2 = ['a', 'b', 'a', 'c'] result = arr2.zip(arr1).group_by(&:first).transform_values { |items| items.map(&:last) }
运行后直接输出{"a"=>[1, 3], "b"=>[2], "c"=>[4]},完全符合你的需求。
写法2(Ruby 2.7+版本支持,逻辑更直观)
直接用带块的to_h配合遍历实现:
result = arr2.zip(arr1).each_with_object(Hash.new { |h,k| h[k] = [] }) do |(key, val), hash| hash[key] << val end
内容的提问来源于stack exchange,提问作者fftrash
相关产品推荐
相关产品推荐

