Форум сайта python.su
1
Всем хорошего дня! Я совсем новичок, второй день туплю над кодом, помогите, люди добрые.
Задача:
Необходимо написать клиент к API VK , который будет считать распределение возрастов друзей для указанного пользователя. То есть на вход подается username или user_id пользователя, на выходе получаем список пар (<возраст>, <количество друзей с таким возрастом>), отсортированный по убыванию по второму ключу (количество друзей) и по возрастанию по первому ключу (возраст). Например:
[(26, 8), (21, 6), (22, 6), (40, 2), (19, 1), (20, 1)]
def calc_age(user_id): pass if __name__ == '__main__': res = calc_age('reigning') print(res)
def calc_age(user_id): api_url = 'https://api.vk.com/method/users.get?v=5.71&access_token=17da724517da724517da72458517b8abce117da17da72454d235c274f1a2be5f45ee711&user_ids=' user_name = input("Enter user ID or nickname: ") r = requests.get(api_url + user_name) user_id = r.text.split(':')[2] api_url = 'https://api.vk.com/method/friends.get?v=5.71&access_token=17da724517da724517da72458517b8abce117da17da72454d235c274f1a2be5f45ee711&user_id=' r = requests.get(api_url + user_id[:-13] + '&fields=bdate') data = r.json() friend_list = data ['response']['items'] birthday = friend_list['bdate'].split('.')
Python/Python_SF/Python_SF/InstallTest/FirstLesson.py”, line 18, in <module>Офлайн
22
friend_list = dataСудя по всему (в том числе по ошибке), в friend_list - это список друзей. Ты почему-то из него сразу пытаешься взять поле ‘bdate’, хотя оно , наверное, находится в элементах этого списка. Так что проходи циклом по всем этим элементам списка и вытаскивай эту ‘bdate’ оттуда:
birthday = friend_list.split('.')
friend_list = data ['response']['items'] dates = [] for item in friend_list: birthday = item['bdate'].split('.') dates.append(birthday)
Офлайн
1
Striver
Судя по всему (в том числе по ошибке), в friend_list - это список друзей. Ты почему-то из него сразу пытаешься взять поле ‘bdate’, хотя оно , наверное, находится в элементах этого списка. Так что проходи циклом по всем этим элементам списка и вытаскивай эту ‘bdate’ оттуда:
File "D:/Python/Python_SF/Python_SF/InstallTest/FirstLesson.py", line 20, in <module> birthday = item ['bdate'] .split('.') KeyError: 'bdate'
[{'id': 10, 'first_name': 'Alexander', 'last_name': 'Kuznetsov', 'track_code': '12992d65Aav5qQ17YIBZr6tVdEOSu1FarPP8P2MUCFv0tjZ5j4ZswKKaPX40twH62eehjnK-'}, {'id': 135, 'first_name'
Отредактировано AndrewP (Апрель 16, 2020 15:31:58)
Офлайн
22
friend_list выглядит так:Ну, тут никакой bdate и нету.
[{'id': 10, ‘first_name’: ‘Alexander’, ‘last_name’: ‘Kuznetsov’, ‘track_code’: ‘12992d65Aav5qQ17YIBZr6tVdEOSu1FarPP8P2MUCFv0tjZ5j4ZswKKaPX40twH62eehjnK-’}, {'id': 135, ‘first_name’
итд
birthday = item['bdate'].split('.') dates.append(birthday)
if 'bdate' in item: birthday = item['bdate'].split('.') dates.append(birthday)
Отредактировано Striver (Апрель 16, 2020 17:19:24)
Офлайн
1
StriverПолучилось, большое спасибо!
Офлайн