You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将点分隔字符串转换为任意层级的嵌套哈希

点分隔字符串转嵌套哈希通用实现方案

核心思路

  • 将输入的点分隔字符串用.切割为层级键数组,例如foo.bar.baz会被切割为['foo', 'bar', 'baz']
  • 倒序遍历键数组,从最内层开始逐层向外包裹对象/哈希结构,最终将输入值放在最内层的键对应位置
  • 天然适配任意长度的合法点分隔字符串,不受层级数量限制

JavaScript 实现

function buildNestedObject(keyStr, value) {
  const keys = keyStr.split('.');
  return keys.reduceRight((nested, key) => ({ [key]: nested }), value);
}

// 测试用例
console.log(buildNestedObject('foo.bar.baz', 'qux')) 
// 输出:{ foo: { bar: { baz: 'qux' } } }
console.log(buildNestedObject('foo.bar.baz.qux', 123))
// 输出:{ foo: { bar: { baz: { qux: 123 } } } }

Python 实现

def build_nested_dict(key_str: str, value) -> dict:
    keys = key_str.split('.')
    nested = value
    for key in reversed(keys):
        nested = {key: nested}
    return nested

# 测试用例
print(build_nested_dict('foo.bar.baz', 'qux'))
# 输出:{'foo': {'bar': {'baz': 'qux'}}}
print(build_nested_dict('foo.bar', 'test'))
# 输出:{'foo': {'bar': 'test'}}

Ruby 实现

def build_nested_hash(key_str, value)
  key_str.split('.').reverse.inject(value) { |acc, key| { key.to_sym => acc } }
end

# 测试用例
p build_nested_hash('foo.bar.baz', 'qux')
# 输出:{:foo=>{:bar=>{:baz=>"qux"}}}

如果需要支持合并到已存在的对象/哈希、过滤空键等特殊场景,在上述代码基础上补充对应入参校验和遍历逻辑即可。

内容的提问来源于stack exchange,提问作者dya26

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 15:24:03