gpt4 book ai didi

ruby - 如何将数组转换为以数组元素为散列键且所有散列值都设置为给定值的散列

转载 作者:数据小太阳 更新时间:2023-10-29 07:45:04 25 4
gpt4 key购买 nike

使用 Ruby 2.1(使用 ActiveSupport 3.x,如果有帮助的话),我想像这样转换一个数组:

[ :apples, :bananas, :strawberries ]

变成这样的散列:

{ :apples => 20, :bananas => 20, :strawberries => 20 }

从技术上讲,这是可行的:

array = [ :apples, :bananas, :strawberries ]
hash = Hash[array.zip(Array.new(array.length, 20))]
# => {:apples=>20, :bananas=>20, :strawberries=>20}

但这看起来真的很笨拙,我觉得有一种更直接的方法可以做到这一点。有吗?

我看了Enumerable#zip以及 Hash#new默认值选项但没有看到任何为这种转换提供简单方法的东西。

最佳答案

另一个答案:

ary = [ :apples, :bananas, :strawberries ]
Hash[[*ary.each_with_object(20)]]
# => {:apples=>20, :bananas=>20, :strawberries=>20}

或者(正如 OP 所指出的):

ary.each_with_object(20).to_h
# => {:apples=>20, :bananas=>20, :strawberries=>20}

基本上,调用 each_with_object 会返回一个 Enumerator 对象,该对象由每个值和数字 20 组成(即 [:apples, 20],... ) 随后可以转换为哈希。

关于ruby - 如何将数组转换为以数组元素为散列键且所有散列值都设置为给定值的散列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23684602/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com