gpt4 book ai didi

ruby - 从不同嵌套的哈希中提取特定键

转载 作者:数据小太阳 更新时间:2023-10-29 09:02:13 24 4
gpt4 key购买 nike

我正在尝试将提供的哈希中的不同“名称”值连接成一个字符串。因此输出应该是一个包含所有“名称”值的数组或字符串。

对我来说,困难在于嵌套级别在两个和四个 parent 之间有所不同。

我试过用两种方法解决它:

  1. 递归地遍历散列并在每个级别上将值附加到数组。终于吐出阵法了。
  2. 展平散列,然后从该数组中挑选

不幸的是,相关问题中给出的答案似乎也没有用。我敢肯定这很简单,但我似乎无法弄清楚。非常感谢

my_hash = { "BreadCrumbs" => {
"Id" => 375,
"Name" => "Willingen",
"Parent" => {
"Id" => 52272,
"Name" => "Wintersport-Arena Sauerland",
"Parent" => {
"Id" => 8,
"Name" => "Germany"
}
}
}
}

最佳答案

▶ hash = { "BreadCrumbs" => {
▷ "Id" => 375,
▷ "Name" => "Willingen",
▷ "Parent" => {
▷ "Id" => 52272,
▷ "Name" => "Wintersport-Arena Sauerland",
▷ "Parent" => {
▷ "Id" => 8,
▷ "Name" => "Germany"
▷ }
▷ }
▷ }}
▶ def concat hash
▷ [hash['Name'], hash['Parent'] ? concat(hash['Parent']) : nil]
▷ end
▶ (concat hash['BreadCrumbs']).flatten.compact
#⇒ ["Willingen", "Wintersport-Arena Sauerland", "Germany"]

我不会在每次迭代时展平,这样结果仍然包含层次结构:

▶ concat hash['BreadCrumbs']
#⇒ ["Willingen", ["Wintersport-Arena Sauerland", ["Germany", nil]]]

请求的字符串作为结果:

▶ (concat hash['BreadCrumbs']).flatten.compact.join ', '
#⇒ "Willingen, Wintersport-Arena Sauerland, Germany"

关于ruby - 从不同嵌套的哈希中提取特定键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32786335/

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