Я хотел бы заменить все ЗНАЧЕНИЯ во вложенном словаре значениями из списка. Искал часами и не мог найти решение.
Итак, я читаю значения из 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"
},
С уважением
Всем привет! Хорошая мысль, только что обновил. Спасибо






Поскольку это линейное присвоение значений, мы можем перебирать объект 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'}}
Сработало как шарм, спасибо!
Поскольку json вложен немного больше, чем показывает мой пример, он пропускает некоторые части:/
Моя вина в том, что я не прояснил это, я обновил пример json, если вы хотите посмотреть.
Гораздо проще ответить на вопрос, если привести конкретный пример. Мы не знаем содержимого
list.txtизlang.json, поэтому ни один из ваших кодов не может быть запущен для нас. Вместо этого просто создайте простой список и диктовку, показывающую, что вы пытаетесь сделать, и результат, который вы надеетесь получить таким образом, чтобы мы могли скопировать/вставить и запустить его.