Как поместить значение нового ключа JSON в условие?
import vk_api
from config import mytoken
session = vk_api.VkApi(token=mytoken)
vk = session.get_api()
friends = session.method("friends.get", {'user_id': *id пользователя*})
for i in friends['items']:
friend_info = session.method('users.get', {'user_ids': i})
if friend_info[0]['deactivated'] == 'deleted':
continue
else:
print(friend_info)
При запросе информации о НЕудаленном пользователе с помощью users.get мне возвращает JSON:
[{'first_name': 'Вадим', 'id': *id пользователя*, 'last_name': 'Журавлев', 'can_access_closed': True, 'is_closed': False}]
А при запросе информации об удаленном пользователе появляется новый ключ deactivated:
[{'first_name': 'Lieben', 'id': *id пользователя*, 'last_name': 'Spruke', 'deactivated': 'deleted'}]
Но цикл с пропуском не работает:
if friend_info[0]['deactivated'] == 'deleted':
continue
Так как, при сканировании друзей с неудаленными страницами возвращается JSON файл без ключа 'deactivated', на что в последствии предъявляется жалоба:
Traceback (most recent call last):
File "C:\Users\Стас\Desktop\python\strbot\test.py", line 10, in <module>
if friend_info[0]['deactivated'] == 'deleted':
KeyError: 'deactivated'
Задача: программа должна пропускать друзей, у которых в JSON появляется новый ключ 'deactivated'.
Ответы (2 шт):
Автор решения: chagins
→ Ссылка
Можно сделать проверку на наличие ключа 'deactivated'.
if 'deactivated' in friend_info[0] and friend_info[0]['deactivated'] == 'deleted':
continue
else:
...
Автор решения: MaxU
→ Ссылка
Можно воспользоваться методом dict.get(), который по умолчанию возвращает None если ключ не найден:
if friend_info[0].get('deactivated') == 'deleted':
continue
В итоге вы получите короткую и понятную запись.