найти значение в dict? - PullRequest
       1

найти значение в dict?

2 голосов
/ 19 января 2012

Я пытаюсь распечатать сообщение. Если слово в словаре не найдено, то вместо сообщения об ошибке следует распечатать сообщение. То, что я думал, это

if bool(bool(dictionary[word])) == True:
    return dictionary[word]
else:
    print 'wrong'

но это не работает, когда я пишу что-то, чего нет в словаре, вместо этого он выдает что-то вроде этого

Traceback (most recent call last):
  File "<pyshell#34>", line 1, in <module>
    translate_word('hous')
  File "H:\IND104\final\Project 4 - Italian-Spanish Translator\trial 1.py", line 21, in translate_word
    if bool(bool(dictionary[word])) == True:
KeyError: 'hous' 

Так как я могу распечатать сообщение об ошибке спасибо.

Ответы [ 5 ]

10 голосов
/ 19 января 2012

Вам нужно использовать оператор in, чтобы проверить, есть ли ключ в словаре.С вашими именами переменных это становится:

if word in dictionary:

Если вы хотите проверить наличие ключа и получить значение за один раз, вы можете использовать метод get():

value = dictionary.get(word)
if value is not None:
    ...

Вы можете указать собственное значение по умолчанию для get(), которое возвращается, если ключ не найден.Тогда вы можете написать свой код так:

print dictionary.get(word, 'wrong')
2 голосов
/ 19 января 2012

Один из способов достичь желаемого - это блок try / except:

try:
    return dictionary[word]
except KeyError:
    print 'wrong'
    return None
1 голос
/ 19 января 2012
if word in dictionary:
    return dictionary[word]
else:
    print("wrong")
0 голосов
/ 19 января 2012

Время выучить обработку исключений:

try:
    some_stuff()
except:
    print "Sorry, an error occured"
0 голосов
/ 19 января 2012

Индексирование словаря предполагает, что ключ уже существует, чтобы проверить, находится ли ключ в словаре, попробуйте следующее:

#Check to see if a key is in a dictionary
dictionary = {'key' : 123}
if 'key' in dictionary:
 #Do something
else:
 #Do something else

[ключ] в [словаре] теперь является предпочтительным синтаксисом по сравнению с предыдущим методом словаря has_key ([ключ]): ссылка

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...