gpt4 book ai didi

ruby - 将嵌套散列展平为数组

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

我想将嵌套散列展平为一个数组。例如:

a = {'1'=>{'2'=>{'5'=>{},'6'=>{'8'=>{}}}},'3'=>{},'4'=>{'7'=>{}}}

flatten_nested_hash(a) 的结果将是:

["1", "2", "5", "6", "8", "3", "4", "7"]

最后我写了一些递归函数,但我觉得必须有一些更简单的非递归方法。

我的函数如下所示:

  def flatten_nested_hash(categories)
categories.map do |k,v|
if v == {}
k
else
[k,flatten_nested_hash(v)]
end
end.flatten
end

最佳答案

递归。

def flatten_nested_hash(categories)
categories.flat_map{|k, v| [k, *flatten_nested_hash(v)]}
end

在 Hash 类上定义它。

class Hash
def flatten_nested; flat_map{|k, v| [k, *v.flatten_nested]} end
end

关于ruby - 将嵌套散列展平为数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17613426/

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