ruby - 填充数组并将哈希值转换为数组

标签 ruby arrays hash

如果我有一个散列 {:one => [1,2,3,4], :two => [6,7,8]} 我怎样才能在其中创建一个数组数组[0] = [1,6], [1] = [2,7], [2] = [3,8], [3] = [4,nil]`` ?

最佳答案

使用zip:

h = {:one => [1,2,3,4], :two => [6,7,8]}
h[:one].zip h[:two] # => [[1, 6], [2, 7], [3, 8], [4, nil]]

对于任意数量的键:

h = {:one => [1,2,3,4], :two => [6,7,8], :three => [9,10]}
vals = h.values # => [[1, 2, 3, 4], [6, 7, 8], [9, 10]]
vals[0].zip *vals[1..-1] # => [[1, 6, 9], [2, 7, 10], [3, 8, nil], [4, nil, nil]]

但是我不相信这些的顺序是有保证的(因为哈希是无序的)。您可能需要考虑不同的方法。 (正如 David 在评论中指出的那样,哈希实际上在 Ruby 1.9 中是有序的,所以这不是一个问题。)

关于ruby - 填充数组并将哈希值转换为数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6727628/

相关文章:

hash - 如何在 Google Storage Transfer 上创建 tsv 文件

ruby-on-rails - 哈希 to_json 和返回不保留哈希作为键?

mysql - 无法启动 WEBRick Web 服务器 - Ruby 抛出 MySQL 错误

ruby - 在 Ruby 中通过 using::operator 定义方法是什么意思?

ruby - 为什么 irb 将控制字符插入到我的反向交互搜索缓冲区中?

在 C 中创建一个 int 数组数组?

php - 将单元素数组的数组转换为一维数组

python - FNV1A_64 不匹配

arrays - 表中逐行循环数组数据

php - 代码不回显 "ok"