Проверка элемента в словаре
Я получаю строки JSON:
{'lastname': 'Asd', 'firstname': 'Qwe', 'middlename': 'Nbe', 'city': 'n', 'phone': '123'}
{'lastname': 'Asd', 'firstname': 'Qwe', 'middlename': 'Nbe', 'city': 'n', 'phone': '99301232132'}
И вывожу данные:
Имя: {value['lastname']} {value['firstname']} {value['middlename']}
Город: {value['city']}
Телефон: {value['phone']}
Но дело в том, что иногда строки могут быть без какого-то элемента, к примеру без телефона:
{'lastname': 'Asd', 'firstname': 'Qwe', 'middlename': 'Nbe', 'city': 'n'}
И у меня возникает ошибка:
KeyError: 'phone'
Можно ли сделать проверку и выводить элемент если он существует?
Ответы (2 шт):
Автор решения: Oopss
→ Ссылка
dic={'lastname': 'Asd', 'firstname': 'Qwe', 'middlename': 'Nbe', 'city': 'n'}
for k in ['lastname','firstname','middlename','city','phone']:
print(dic.get(k))
Вывод:
Asd
Qwe
Nbe
n
None
(словарь).get('ключ') возвращает None, если ключ отсутствует.
Автор решения: biflé
→ Ссылка
Можно решить эту проблему двумя способами - проверкой на наличие в словаре и через дефолтное значение.
Первый способ. Проверка.
#проверяем наличие ключа в словаре
if 'name' in dictionary:
text += name
Этот способ мало полезен в вашем случае.
Второй способ. Дефолт-значение.
В python у словарей есть метод get, позволяющий получить дефолтное значение, если в словаре нет такого ключа. Пример:
'Имя: %s %s %s' % (
dictionary.get('lastname', 'Иванов'),
dictionary.get('firstname', 'Иван'), # если нет 'firstname' - подставляется 'Иван'
dictionary.get('middlename', ''), #если нет 'middlename' - подставляется пустая строка
)