If you want to preserve the order of your mapping keys, the white space between the elements of the root-level sequence, and the comment, e.g. because this file is under revision control, then I would highly suggest you use ruamel.yaml
pip install ruamel.yaml
Write your YAML code in a file called input.yaml
. We are using this file inside our code.
code.py
import sys import ruamel.yaml yaml = ruamel.yaml.YAML() # yaml.preserve_quotes = True with open('input.yaml') as fp: data = yaml.load(fp) for elem in data: if elem['name'] == 'sense2': elem['value'] = 1234 break # no need to iterate further yaml.dump(data, sys.stdout)