【发布时间】:2021-08-20 16:33:26
【问题描述】:
我有一个数组数组(“pluck”用法的结果),格式如下:
arr = [[1, 'A1', 'B1'],[2, 'A2', 'B2'],[3, 'A3', 'B3']]
如何从中获取以下哈希?
{1=>[1, 'A1', 'B1'], 2=>[2, 'A2', 'B2'], 3=>[3, 'A3', 'B3']}
我知道这种形式,但肯定也有一种行形式
hash = Hash.new
arr.each do |x|
hash[x[0]] = x
end
【问题讨论】:
-
就我个人而言,我很喜欢你发布的表格——它可能是最易读的并且几乎是最紧凑的,即使其他一些咒语可能会挤出几个字符。我倾向于将其放在 {} 表单中的一行
arr.each { |x| hash[x[0]] = x} -
@MichaelBerkowski 我倾向于说
arr.group_by(&:first)更紧凑,更易于理解。 -
@engineersmnky 是的,我同意,这是一个巧妙的实现。我承认,如果我在我的代码库中找到它,我将不得不查看 Array#group_by 文档以确保我知道它做了什么。
-
@dawg 不会产生所需的结果,因为它不会在
Hash的值部分保留元素sa[0] -
@dawg 在我的问题中,我提到了 {1=>[1, "A1", "B1"] ...但只是因为它对我来说更容易实现。你的进步非常好。