Python 如何使用ruamel.yaml添加节点

Python 如何使用ruamel.yaml添加节点,python,pyyaml,ruamel.yaml,Python,Pyyaml,Ruamel.yaml,我尝试在以下位置添加新节点,但: 给我一个错误: Traceback (most recent call last): File "item_updater.py", line 148, in <module> myitems['wohnung'].append('test') AttributeError: 'CommentedMap' object has no attribute 'append' 回溯(最近一次呼叫最后一次): 文件“item_updater.p

我尝试在以下位置添加新节点,但:

给我一个错误:

Traceback (most recent call last):
  File "item_updater.py", line 148, in <module>
    myitems['wohnung'].append('test')
AttributeError: 'CommentedMap' object has no attribute 'append'
回溯(最近一次呼叫最后一次):
文件“item_updater.py”,第148行,在
myitems['wohnung'].append('test')
AttributeError:“CommentedMap”对象没有属性“append”

我使用的是ruamel.yaml v0.13.7


我做错了什么?

您的错误不是来自您所指出的示例,因为在示例的
inp
中,您的错误中没有显示任何
wohnung

您可能忘记了某个地方的
-

wohnung:
   a: 1
而不是:

wohnung:
- a: 1
只有在后者上,您才能使用
myitems['wohnung']进行追加。追加('test')


这个例子是有效的,但是如果没有显示您的真实YAML输入,就很难看出您的错误的确切原因。

您确定使用0.8版吗?什么的0.8版?我使用的是ruamel.YAML v0.13.7(这是最新版本)好的,阅读这个例子时,我的印象不仅是
数据['abc']。append('b')
,但是
data['xyz'].append('b')
也可以。YAML文件的顶层是一个映射。它的键“abc”具有一个序列值。它作为-
list
的一个子类加载到Python中(第一个元素是
'a'
)。toplevel的键
xyz
的值也是一个映射。它作为-
dict
的a-子类加载(带有键/值对
('a',1)
('b',2)
,等等)。您可以附加到
列表中,但不能附加到
dict
中,明白了。谢谢你的澄清一般来说,我在理解python中yaml实现的细节时会遇到一些困难。Pyaml和ruamel.yaml没有被广泛地记录。@msinn编写了ruamel.yaml的文档。你是对的,这通常是事后才想到的,如果有任何想法的话。请随时在这里询问澄清,但请确保您包括您的确切输入(最小化)。这就是为什么我“抱怨”不清楚“
wohnung
”来自哪里。
wohnung:
- a: 1