#python #python-3.x
#python #python-3.x
Вопрос:
Я пытаюсь сделать следующий код запрашивающим ответ, а затем добавить этот ответ в словарь под названием poll. Я пытаюсь использовать команду append, которая обычно используется для списка, но она работает не только для словаря.
На данный момент мне не удалось ни обновить значения ключа (моя предполагаемая цель), ни даже просто добавить новый элемент в словарь (не предназначенный).
poll = {
'cat': 0,
'dog': 0,
'both': 0,
'none': 0,
}
prompt = "Are you a cat owner, dog owner, both, or none? "
prompt = "nEnter 'quit' to stop this loop n"
message = ""
while message != "quit":
message = input(prompt)
poll[message].append(value)
if message != "quit":
print("Your answer was submitted! n")
print("Poll results:n", poll)
Комментарии:
1. Откуда
value
берется? Вы пытаетесь увеличить количество?2. вы пытаетесь сохранить несколько ответов на свой опрос? или просто суммировать количество ответов для каждой категории?
3. Вы должны по крайней мере добавить некоторую проверку входных данных, иначе любой нестандартный ответ приведет к сбою, даже если логика словаря исправлена.
4. @Марк Мейер. значение было заполнителем, когда я безуспешно пробовал что-то из другого примера. В приведенном там примере кода также не было объявлено «значение», поэтому я подумал, что это может что-то значить, и моя IDE не сообщала мне, что это ошибка.
5. @Stefano Gallotti. Просто сохраните сумму количества ответов
Ответ №1:
Если вы хотите добавить новую пару ключ-значение в словарь, вместо добавления вы можете сделать следующее, хотя я не вижу переменной value
в вашем коде. При повторном вводе значение существующего ключа также будет обновлено, поскольку в словаре не может быть дубликатов ключей
poll[message] = value
Предполагая, что вы позаботились о переменной value
, код будет выглядеть следующим образом
Как указал Дэвид Бак, вам нужно переместить poll[message] = value
часть внутри if
инструкции
while message != "quit":
message = input(prompt)
if message != "quit":
poll[message] = value
print("Your answer was submitted! n")
print("Poll results:n", poll)
Ответ №2:
Я бы просто обновил значение словаря на основе голосования. Вот пример для меня, вводящего ‘dog’:
Начальный словарь:
poll = {
'cat': 0,
'dog': 0,
'both': 0,
'none': 0,
}
Мой ответ:
my_response = 'dog'
Обновите ключ ‘dog’:
poll[my_response] = 1
Вывод:
{'cat': 0, 'dog': 1, 'both': 0, 'none': 0}
Ответ №3:
Я думаю, вы можете что-то перепутать. У вас нет ни списка, ни переменной с именем value
. Если вы пытаетесь подсчитать количество людей с домашними животными, вы можете использовать poll[message] = 1
.
Например:
poll = {
'cat': 0,
'dog': 0,
'both': 0,
'none': 0,
}
poll['cat'] = 1 # poll['cat'] = poll['cat'] 1
poll['cat'] = 1 # poll['cat'] = poll['cat'] 1
poll['dog'] = 1 # poll['dog'] = poll['dog'] 1
print(poll)
# {'cat': 2, 'dog': 1, 'both': 0, 'none': 0}
Кроме того, вам следует изменить условие while
и порядок if
инструкции:
poll = {
'cat': 0,
'dog': 0,
'both': 0,
'none': 0,
}
prompt = "Are you a cat owner, dog owner, both, or none? "
prompt = "nEnter 'quit' to stop this loop n"
message = ""
while True:
message = input(prompt)
if message != "quit":
print("Your answer was submitted! n")
else:
break
poll[message] = 1
print("Poll results:n", poll)
Тест:
Are you a cat owner, dog owner, both, or none?
Enter 'quit' to stop this loop
>>> cat
Your answer was submitted!
Are you a cat owner, dog owner, both, or none?
Enter 'quit' to stop this loop
>>> cat
Your answer was submitted!
Are you a cat owner, dog owner, both, or none?
Enter 'quit' to stop this loop
>>> dog
Your answer was submitted!
Are you a cat owner, dog owner, both, or none?
Enter 'quit' to stop this loop
>>> quit
Poll results:
{'cat': 2, 'dog': 1, 'both': 0, 'none': 0}
Очевидно, что вы можете сделать гораздо больше, например, использовать poll.get(key, default)
для добавления значений, e.: poll[message] = poll.get(message, 0) 1
, поэтому, даже если ключ не существует в словаре, это не приведет к аварийному завершению работы скрипта, вместо этого он создаст новый ключ. Или перед добавлением значения в словарь проверьте, if message in poll.keys(): poll[message] = 1
чтобы скрипт принимал только cat
, dog
both
или none
, но не car
or bird
.
Ответ №4:
это должно сработать:
poll = {
'cat': 0,
'dog': 0,
'both': 0,
'none': 0,
}
prompt = "Are you a cat owner, dog owner, both, or none? "
prompt = "nEnter 'quit' to stop this loop n"
message = ""
while message != "quit":
message = input(prompt)
if message in list(poll):
pass
else:
#else it will give a error that it isn't a key
continue
num = poll[message]
num = 1
poll[message] = num
if message != "quit":
print("Your answer was submitted! n")
print("Poll results:n", poll)
Комментарии:
1. теперь у меня есть переменная num, а не значение переменной. это должно хорошо работать