"value", "nested" => {"key1" => "val1", -6ren">
gpt4 book ai didi

ruby - 在特定位置插入 Ruby 哈希中的条目

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

给定一个散列,比如说,其中有一个嵌套的散列:

hash = {"some_key" => "value",
"nested" => {"key1" => "val1",
"key2" => "val2"}}

和字符串格式的键路径:

path = "nested.key2"

如何在 key2 条目之前添加新的键值对?所以,预期的输出应该是这样的:

hash = {"some_key" => "value",
"nested" => {"key1" => "val1",
"new_key" => "new_value"},
"key2" => "val2"}}

已编辑

我的目标是在某些键之前添加一种标签,以便将哈希转储为 Yaml 文本,并对文本进行后处理以用 Yaml 注释替换添加的键/值。据我所知,没有其他方法可以通过编程方式在 YAML 中的特定键之前添加注释。

最佳答案

使用哈希的数组表示最简单:

subhash   = hash['nested'].to_a
insert_at = subhash.index(subhash.assoc('key2'))
hash['nested'] = Hash[subhash.insert(insert_at, ['new_key', 'new_value'])]

它可以包装成一个函数:

class Hash
def insert_before(key, kvpair)
arr = to_a
pos = arr.index(arr.assoc(key))
if pos
arr.insert(pos, kvpair)
else
arr << kvpair
end
replace Hash[arr]
end
end

hash['nested'].insert_before('key2', ['new_key', 'new_value'])

p hash # {"some_key"=>"value", "nested"=>{"key1"=>"val1", "new_key"=>"new_value", "key2"=>"val2"}}

关于ruby - 在特定位置插入 Ruby 哈希中的条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17236816/

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