Убедитесь, что элемент существует в словаре OrderedDict - PullRequest
0 голосов
/ 05 декабря 2018

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

Вот код:

>>> from collections import OrderedDict
>>> people = OrderedDict()
>>> people['Depark'] = 'Jaipor'
>>> people['James'] = 'Walubi'
>>> 
>>> work = OrderedDict()
>>> work['Train drive'] = 'Big_train'
>>> work['Teacher'] = 'Maths_teacher'
>>>
>>>
>>> def props():
...    d = dict()
...    d['people'] = people
...    d['work'] = work
...    return d

>>> test = props()
>>> if test['people']['Mandeep']:
...     print 'We have Mandeep'
... else:
...    print 'No one by that name'

Это сообщение об ошибке:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'Mandeep'

Я ожидал, что оно напечатает 'No one by that name', поскольку у нас нет ключа Mandeep.

Любая помощь будет принята.

1 Ответ

0 голосов
/ 05 декабря 2018

test['people']['Mandeep'] оценивается до обработки условия if.Неудивительно, что он поднимает KeyError.Одним из решений Pythonic является использование конструкции try / except:

try:
    test['people']['Mandeep']
    print('We have Mandeep')
except KeyError:
    print('No one by that name')

Если вы хотите использовать предложение if / else, вы можете проверить,ключ существует в вашем под-словаре:

if 'Mandeep' in test['people']:
    print('We have Mandeep')
else:
    print('No one by that name')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...