python - обновить значение дикта - PullRequest
0 голосов
/ 14 января 2020

Следующий код читает из файла YAML и преобразует в пару ключ-значение. Сохранение словаря в переменную «config».

To do - обновить поле «name» для «key4» с «Name2» до «newName».

from yaml import load as yload, YAMLError, SafeLoader

YAML_FILE = "test.yaml"

def toTest(): 
  fp = getFile(path.dirname(__file__), YAML_FILE)
  config = yload(fp.read(), Loader=SafeLoader)
  config.setdefault(conf.get("key1").get("key2").get("key4").get("name"), "newName")

def getFile(filepath, filename) -> TextIO:
    filepathR = open("%(path)s/%(filename)s" % {
        "path": filepath,
        "filename": filename
    }
    return filepathR

test.yaml -

key1:
  key2:
    key3:
      name: Name1
      address: Add1
    key4:
      name: Name2
      address: Add2

setdefault, похоже, не работает.

Как правильно обновить это значение?

1 Ответ

0 голосов
/ 14 января 2020

Вы можете установить новое значение с помощью

config['key1']['key2']['key4']['name'] = 'newName'

при условии, что все такие ключи присутствуют в словаре

...