【问题标题】:Converting array to hash (Ruby) [closed]将数组转换为哈希(Ruby)[关闭]
【发布时间】:2017-06-09 17:10:32
【问题描述】:

下面是我班上的问题。

给定变量some_array = [[:a, 123], [:b, 456]]
将 some_array 转换成这个哈希:{a: 123, b: 456}

【问题讨论】:

标签: arrays ruby hash


【解决方案1】:

要转换为哈希,只需使用 .to_h 方法

some_array.to_h

【讨论】:

    【解决方案2】:

    我也是一个初学者,所以这可能有点效率低下,但这就是我要解释的方式(我敢肯定有更简单的方法,但既然你提到这是一个类,我想我' d 详细解释):

    hash={}
    
    some_array.each do |item|
        hash[item[0]] = item[1]
    end
    

    为了稍微解释一下,我先创建一个空散列,稍后再使用。

    然后我使用each 方法循环遍历some_array。这会将 some_array 中的每个元素分配给变量item。鉴于 some_array 是一个嵌套数组(这基本上意味着它是一个数组数组),item 变量将采用内部数组的值 - 例如,item = [:a, 123]

    然后我们可以在创建哈希时访问item 中的每个元素。按照我之前给出的item[0] == :aitem[1] == 123 的相同示例。

    然后我在创建哈希时使用一些速记 - 即hash[key] = value。在这种情况下,我希望键为 :a(即 item[0]),值为 123(即 item[1])。所以我可以使用hash[item[0]] = item[1]

    希望有所帮助!

    【讨论】:

    • .to_h 方法正是这样做的时候,你为什么要这样做呢?虽然出于学术原因实施这样的事情可能具有教育意义,但解决方案是阅读手册并寻找可用的工具。
    • 谢谢@tadman ,因为这似乎是一个基本问题,我想他一定是刚刚开始,并希望得到解释。但是您的评论也是有效的,使用可用的工具同样重要。
    • 我不是想在这里骂你,只是说在生产代码中你应该按照书本去做。一如既往,渴望了解更多并进行实验。例如,如果您想使用这种方法,可以使用each_with_object 改进您的代码。有时您正在做的事情是有效的,因为您想对每个 item[1] 执行转换。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-17
    • 1970-01-01
    • 1970-01-01
    • 2010-12-11
    • 2021-10-16
    • 2020-12-22
    • 1970-01-01
    相关资源
    最近更新 更多