如何从 TCL 写出嵌套密钥 YAML?
How to write out nested key YAML from TCL?
我正在寻找如下模板。我尝试了 dict2yaml,它没有给出如下的 YAML 格式。
有人可以帮忙吗?
LEVEL_1:
LEVEL_2:
LEVEL_3: some_value
另一个变体是
LEVEL_1:
LEVEL_2:
LEVEL_3:
- some_value1
- some_value2
- some_value3
这是一个很好的例子,说明 Tcl 的类型系统对您没有帮助。任何包含偶数项的列表都可以被视为字典。
例如:
set nested_dict {key1 {key2 {x y}}}
是y
具有三个嵌套键的字典的值还是{x y}
具有两个嵌套键的字典的值?
yaml::dict2yaml
函数仅适用于没有嵌套键的简单字典。
一种可能是将您的嵌套字典转换为“huddle”https://wiki.tcl-lang.org/page/huddle,然后使用 yaml::huddle2yaml
。
迭代嵌套键并自己处理缩进可能更简单。这是假设您知道嵌套字典的结构。
set nested_dict {key1 {key2 {x y}}}
dict for {k1 d1} $nested_dict {
puts "$k1:"
dict for {k2 d2} $d1 {
puts " $k2:"
dict for {k3 val} $d2 {
puts " $k3: $val"
}
}
}
打印出:
key1:
key2:
x: y
一个乱七八糟的例子:
package require huddle
package require yaml
set MyHuddle [huddle create]
huddle set MyHuddle LEVEL_1 [huddle create]
huddle set MyHuddle LEVEL_1 LEVEL_2 [huddle create]
huddle set MyHuddle LEVEL_1 LEVEL_2 LEVEL_3 [huddle list some_value1 some_value2 some_value3]
yaml::huddle2yaml $MyHuddle
打印出:
---
LEVEL_1:
LEVEL_2:
LEVEL_3:
- some_value1
- some_value2
- some_value3
请仔细阅读 huddle 手册页。 huddle create
和 huddle set
与 dict create
和 dict set
非常相似。但是,我发现我需要在 LEVEL_1 和 LEVEL2 下面明确创建一个 huddle,然后才能设置 LEVEL_3 键的值。
我正在寻找如下模板。我尝试了 dict2yaml,它没有给出如下的 YAML 格式。 有人可以帮忙吗?
LEVEL_1:
LEVEL_2:
LEVEL_3: some_value
另一个变体是
LEVEL_1:
LEVEL_2:
LEVEL_3:
- some_value1
- some_value2
- some_value3
这是一个很好的例子,说明 Tcl 的类型系统对您没有帮助。任何包含偶数项的列表都可以被视为字典。
例如:
set nested_dict {key1 {key2 {x y}}}
是y
具有三个嵌套键的字典的值还是{x y}
具有两个嵌套键的字典的值?
yaml::dict2yaml
函数仅适用于没有嵌套键的简单字典。
一种可能是将您的嵌套字典转换为“huddle”https://wiki.tcl-lang.org/page/huddle,然后使用 yaml::huddle2yaml
。
迭代嵌套键并自己处理缩进可能更简单。这是假设您知道嵌套字典的结构。
set nested_dict {key1 {key2 {x y}}}
dict for {k1 d1} $nested_dict {
puts "$k1:"
dict for {k2 d2} $d1 {
puts " $k2:"
dict for {k3 val} $d2 {
puts " $k3: $val"
}
}
}
打印出:
key1:
key2:
x: y
一个乱七八糟的例子:
package require huddle
package require yaml
set MyHuddle [huddle create]
huddle set MyHuddle LEVEL_1 [huddle create]
huddle set MyHuddle LEVEL_1 LEVEL_2 [huddle create]
huddle set MyHuddle LEVEL_1 LEVEL_2 LEVEL_3 [huddle list some_value1 some_value2 some_value3]
yaml::huddle2yaml $MyHuddle
打印出:
---
LEVEL_1:
LEVEL_2:
LEVEL_3:
- some_value1
- some_value2
- some_value3
请仔细阅读 huddle 手册页。 huddle create
和 huddle set
与 dict create
和 dict set
非常相似。但是,我发现我需要在 LEVEL_1 和 LEVEL2 下面明确创建一个 huddle,然后才能设置 LEVEL_3 键的值。