Python — заменить ВСЕ значения во вложенном словаре

Я хотел бы заменить все ЗНАЧЕНИЯ во вложенном словаре значениями из списка. Искал часами и не мог найти решение.

Итак, я читаю значения из txt-файла и помещаю их в список, а затем хочу заменить все значения dict значениями из списка.

Это будет хорошо работать, поскольку все элементы в списке имеют одинаковое количество значений во вложенном словаре.

Это мой код до сих пор:

def print_hi(name):

     
    file = open("list.txt")
    list = file.read()
    file.close()

    newlist = list.split("\n")

    file = open("lang.json")
    jsonString = file.read()
    file.close()

    jsonObject = json.loads(jsonString)

    for key, value in jsonObject.items():
     jsonObject[key] = newlist[]
     print(jsonObject)




if __name__ == '__main__':
    print_hi('PyCharm')

Пример того, как выглядят мои .json и .txt.

    {
  "general": {
    "accessibility": {
      "skip_to_content": "Skip to content",
      "close_modal": "Close (esc)",
      "close": "Close",
      "learn_more": "Learn more"
    },

Hello there
How are you 
Nice to meet you
Read more

Результат, который я ищу:

  "general": {
    "accessibility": {
      "skip_to_content": "Hello there",
      "close_modal": "How are you",
      "close": "Nice to meet you",
      "learn_more": "Read more"
    },

С уважением

Гораздо проще ответить на вопрос, если привести конкретный пример. Мы не знаем содержимого list.txt из lang.json, поэтому ни один из ваших кодов не может быть запущен для нас. Вместо этого просто создайте простой список и диктовку, показывающую, что вы пытаетесь сделать, и результат, который вы надеетесь получить таким образом, чтобы мы могли скопировать/вставить и запустить его.

Mark 11.10.2022 18:13

Всем привет! Хорошая мысль, только что обновил. Спасибо

kolvas råli 11.10.2022 18:18
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
2
50
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Поскольку это линейное присвоение значений, мы можем перебирать объект JSON и заменять его значения. Как это

for k in jsonObject:
    for sub_k in jsonObject[k]:
        try:
           jsonObject[k][sub_k] = new_list.pop(0)
        except IndexError:
            print('List empty')

print(jsonObject)
{'meta': {'tags': 'Hello there', 'page': 'How are you '},
 '404': {'title': 'Nice to meet you', 'subtext_html': 'Read more'}}

Сработало как шарм, спасибо!

kolvas råli 11.10.2022 20:13

Поскольку json вложен немного больше, чем показывает мой пример, он пропускает некоторые части:/

kolvas råli 11.10.2022 22:13

Моя вина в том, что я не прояснил это, я обновил пример json, если вы хотите посмотреть.

kolvas råli 13.10.2022 12:35

Другие вопросы по теме