ruby - 在 ruby 的嵌套哈希中构建边缘键的路径
问题描述
我有一个具有多个级别的嵌套哈希,我想从根中获取每个边缘键的所有可能路径作为点表示法字符串。例如
{a: {m: {b: 2}, c: {d: {e: nil}}}}
我想生成一个元素数组,如下所示
['a.m.b', 'a.c.d.e']
解决方案
def recurse(h)
h.flat_map do |k,v|
if v.is_a?(Hash)
recurse(v).map { |str| "%s.%s" % [k.to_s, str] }
else
k.to_s
end
end
end
h = {a: {m: {b: 2, c:1}, d: {e: {f: nil}, g: 3}}}
recurse(h)
#=> ["a.m.b", "a.m.c", "a.d.e.f", "a.d.g"]
h = {a: {m: {b: 2, c:1}, d: 5 }, e: {f: {g: nil}, h: 3}}
recurse(h)
#=> ["a.m.b", "a.m.c", "a.d", "e.f.g", "e.h"]
推荐阅读
- python - Pandas 使用由列名组成的列将值动态填充到另一列中
- haskell - 如何将其更改为 Haskell 中的 while 循环?
- python - Python - 提高树数据结构的效率
- java - 配置 Elasticsearch 到 java SpringBoot 应用程序
- node.js - 检查猫鼬文档属性的正确方法是空的
- r - 逻辑回归算法没有收敛
- laravel - 我可以更改在 laravel 的身份验证系统中使用的模型用户吗?
- jquery - 使用 jQuery 查找表的最后一个输入值时遇到问题,我的函数只返回 jibberish。你如何获得最后一行输入值?
- jsp - 为什么 JSTL fmt 的消息标签无法读取属性文件?
- python - 红色的 RGB 值显示为蓝色