Ruby 将哈希数组转换为字符串

Ruby 将哈希数组转换为字符串,ruby,Ruby,是否有一个一行程序可以获得如下所示的字符串: hash = { "d" => [11, 22], "f" => [33, 44, 55] } 谢谢 太好了,谢谢你的提示。为什么此代码不起作用,唯一的区别是我将vs.map替换为vs.each: d:11,d:22,f:33,f:44,f:55 它返回“11,22,33,44,55”使用两个嵌套调用map获取一个“key:value”字符串数组,然后使用join将其转换为一个逗号分隔的字符串: hash.map {|k,vs| vs

是否有一个一行程序可以获得如下所示的字符串:

hash = { "d" => [11, 22], "f" => [33, 44, 55] }
谢谢

太好了,谢谢你的提示。为什么此代码不起作用,唯一的区别是我将
vs.map
替换为
vs.each

d:11,d:22,f:33,f:44,f:55

它返回
“11,22,33,44,55”

使用两个嵌套调用
map
获取一个“key:value”字符串数组,然后使用
join
将其转换为一个逗号分隔的字符串:

hash.map {|k,vs| vs.each {|v| "#{k}:#{v}"}}.join(",")

实际上,在调用join之前,您不需要调用Flatte。Join会自动变平。为什么这段代码不起作用,唯一的区别是我用“vs.each”替换了“vs.map”,hash.map{k,vs{124; vs.each{v}“,{k}:{v}}。Join(,”),它返回“11,22,33,44,55”@user:因为
each
在每个元素上执行块,但丢弃结果,然后返回接收器不变。您使用
每个
仅用于块的副作用,在这种情况下没有副作用。换句话说,您的代码与hash.map{k,vs | vs}.join(“,”)的作用相同。
hash.map {|k,vs| vs.map {|v| "#{k}:#{v}"}}.join(",")
hash.keys.map {|k| hash[k].map {|v| "#{k}:#{v}"}}.flatten.join(",")