我正在寻找如下模板。我尝试了 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
函数仅适用于没有嵌套键的简单字典。
一种可能性是将您的嵌套字典转换为"抱团"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 create
和huddle set
与dict create
和dict set
非常相似。 但是,我发现我需要在 LEVEL_1 和 LEVEL2 下显式创建一个抱团,然后才能设置LEVEL_3键的值。