Похоже, items
- это тип dict
, означающий, что у вас не может быть одинаковых ключей или вы перезаписываете значения снова и снова. Что вам нужно, это list
из dict
с.
Мы могли бы использовать pyyaml
(pip install pyyaml
), чтобы выполнить sh это. Вот пример
import yaml
contents = """
hosts:
- hostid: 43842
tag: "name"
items:
port: "some port"
in: 2342124
out: 2349334"""
# cook the data a little to make items a list instead of a dict
data = yaml.full_load(contents)
for d in data.get('hosts'):
d['items'] = [d.get('items')]
# modify whatever we are interested in
for host in data.get('hosts'):
if host.get('hostid') == 43842:
host['items'].append({
'port': 'another port',
'in': 12345,
'out': 12345
})
# show our modifications
print(yaml.dump(data))
Это печатает:
hosts:
- hostid: 43842
items:
- in: 2342124
out: 2349334
port: some port
- in: 12345
out: 12345
port: another port
tag: name