Как обновить значение словаря в python

Я создал словарь с диапазоном:

answered = dict.fromkeys(range(1,51))

выход:

{1: None, 2: None, 3: None, 4: None, 5: None, 6: None, 7: None, 8: None, 9: None, 10: None, 11: None, 12: None, 13: None, 14: None, 15: None, 16: None, 17: None, 18: None, 19: None, 20: None, 21: None, 22: None, 23: None, 24: None, 25: None, 26: None, 27: None, 28: None, 29: None, 30: None, 31: None, 32: None, 33: None, 34: None, 35: None, 36: None, 37: None, 38: None, 39: None, 40: None, 41: None, 42: None, 43: None, 44: None, 45: None, 46: None, 47: None, 48: None, 49: None, 50: None}

и я попытался обновить значения следующим образом:

answered[1] = sent_answer #sent_answer -> some text

но что я получаю:

{1: None, 2: None, 3: None, ..... ,49: None, 50: None, '1': 'I- III - II - IV'}

он добавляет новый элемент dict, а ключ - str, поэтому вместо этого я хочу, чтобы он обновлял значение указанного ключа.

ваш код работает для меня. Я не вижу никаких проблем, когда я пытаюсь запустить его

NicolasGuruphat 10.04.2022 14:53
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
Четыре эффективных способа центрирования блочных элементов в CSS
Четыре эффективных способа центрирования блочных элементов в CSS
У каждого из нас бывали случаи, когда нам нужно отцентрировать блочный элемент, но мы не знаем, как это сделать. Даже если мы реализуем какой-то...
1
1
25
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

То же, что и ответ @НиколасГуруфат.

Я считаю, что проблема у вас есть в этой части

and I've tried to update the values like this:

answered[1] = sent_answer #sent_answer -> some text```

Я думаю, если вы вернетесь к своему коду, вы найдете answered["1"] вместо answered[1]

но я хочу обновить значение, чтобы не добавлять новое

M.Mevlevi 10.04.2022 15:09

Я знаю, но в вашем коде вы не заменяете, а добавляете. вот почему вы должны использовать answer[1] вместо answer["1"] потому что последний добавляет

unknown989 10.04.2022 16:55

Убедитесь, что у вас тот же тип ключа, который вы пытаетесь обновить. Если это была строка в словаре, то при обновлении используйте строку. Если вы сделаете иначе, python увидит это как другой ключ и добавит его.

answers = {1: None, 2: None, 3: None}
answers[1] = 'some text'
print(answers)

Выход:

{1: 'some text', 2: None, 3: None}

Но если вы используете другой тип, то добавляется новый ключ.

answers['2'] = 'new text'
print(answers)

Выход:

{1: 'some text', 2: None, 3: None, '2': 'new text'}

Ключи также чувствительны к регистру, когда они являются строками.

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

Если вы хотите убедиться, что это будет работать на 100% лучше, используйте update метод словаря, как показано ниже:

my_dict = {1:"a value", 2:"another value"}
my_dict.update({1:"your value"})

и вы получите

{1:"your value", 2:"another value"}

обратите внимание, что вы можете добавить существующие пары "ключ-значение" или новые. В общем, это операция типа опрокидывать.

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