#python #dictionary #parsing
#python #словарь #синтаксический анализ
Вопрос:
У меня есть dict
, который извлекается из API, в котором перечислены профили как таковые:
{
'sections': None,
'global_blacklist_sample': None,
'users': [
{
'pk': 20172538534,
'username': 'username1',
'full_name': 'name1',
'is_private': True,
'profile_pic_url': 'https: //instagram.fsin5-1.fna.fbcdn.net/v/t51.2885-19/s150x150/73546075_539443043502574_2665415317592735744_n.jpg?_nc_ht=instagram.fsin5-1.fna.fbcdn.netamp;_nc_ohc=ZK6_BMRPA68AX8uf94Gamp;_nc_tp=25amp;oh=cdaaf6f4d67261ec05c5db86efd55b12amp;oe=5FE02ABB',
'profile_pic_id': '2182146027925079168_20172038574',
'is_verified': False,
'has_anonymous_profile_picture': False,
'reel_auto_archive': 'on',
'allowed_commenter_type': 'any',
'account_badges': [
],
'latest_reel_media': 0,
'story_reel_media_ids': [
]
},
{
'pk': 13046517457,
'username': 'username2',
'full_name': 'name2',
'is_private': True,
'profile_pic_url': 'https: //instagram.fsin5-1.fna.fbcdn.net/v/t51.2885-19/s150x150/92018644_888563998275610_476140774514229248_n.jpg?_nc_ht=instagram.fsin5-1.fna.fbcdn.netamp;_nc_ohc=nL8P8zD9MR8AX9aoaLBamp;_nc_tp=25amp;oh=c46c751ed4e52e62775c446a3f29e5f9amp;oe=5FE0276C',
'profile_pic_id': '2281189669318307392_13046517447',
'is_verified': False,
'has_anonymous_profile_picture': False,
'account_badges': [
],
'latest_reel_media': 0,
'story_reel_media_ids': [
]
},
{
'pk': 8373043335,
'username': 'username3',
'full_name': 'name3',
'is_private': True,
'profile_pic_url': 'https: //instagram.fsin5-1.fna.fbcdn.net/v/t51.2885-19/s150x150/110630893_306355594052903_5751168818852707872_n.jpg?_nc_ht=instagram.fsin5-1.fna.fbcdn.netamp;_nc_ohc=SrVfiL5_r9cAX8yTCCvamp;_nc_tp=25amp;oh=68db435ac44869d772c16aed8cbdaeb1amp;oe=5FDDE888',
'profile_pic_id': '2358844203752433124_8373061335',
'is_verified': False,
'has_anonymous_profile_picture': False,
'account_badges': [
],
'latest_reel_media': 1605694021,
'story_reel_media_ids': [
]
}
],
'big_list': False,
'next_max_id': None,
'page_size': 200,
'status': 'ok'
}
Я бы хотел, чтобы он выводил / печатал все имена пользователей вместе со is_private
значением. Так, например: "username1:True"
. На самом деле существует много профилей dict
, поэтому ручное использование как таковое не сработает.
print(dict["users"][0]["username"])
print(dict["users"][1]["username"])
print(dict["users"][2]["username"])
Этот фрагмент кода работает, но только если я удалю то, что находится под фрагментом кода:
def iterateDictionary2(key_name, key_name2, some_list):
for d in some_list:
print(d[key_name] ":" str(d[key_name2]))
iterateDictionary2('username', 'is_private', fllwrs)
{
'sections': None,
'global_blacklist_sample': None,
'users':
и
'big_list': False,
'next_max_id': None,
'page_size': 200,
'status': 'ok'
}
Ответ №1:
Не могли бы вы просто перебрать ключ «users» в dict? Это будет выглядеть примерно так:
users_dict = {
'sections': None,
'global_blacklist_sample': None,
'users': [
{
'pk': 20172538534,
'username': 'username1',
'full_name': 'name1',
'is_private': True,
'profile_pic_url': 'https: //instagram.fsin5-1.fna.fbcdn.net/v/t51.2885-19/s150x150/73546075_539443043502574_2665415317592735744_n.jpg?_nc_ht=instagram.fsin5-1.fna.fbcdn.netamp;_nc_ohc=ZK6_BMRPA68AX8uf94Gamp;_nc_tp=25amp;oh=cdaaf6f4d67261ec05c5db86efd55b12amp;oe=5FE02ABB',
'profile_pic_id': '2182146027925079168_20172038574',
'is_verified': False,
'has_anonymous_profile_picture': False,
'reel_auto_archive': 'on',
'allowed_commenter_type': 'any',
'account_badges': [
],
'latest_reel_media': 0,
'story_reel_media_ids': [
]
},
{
'pk': 13046517457,
'username': 'username2',
'full_name': 'name2',
'is_private': True,
'profile_pic_url': 'https: //instagram.fsin5-1.fna.fbcdn.net/v/t51.2885-19/s150x150/92018644_888563998275610_476140774514229248_n.jpg?_nc_ht=instagram.fsin5-1.fna.fbcdn.netamp;_nc_ohc=nL8P8zD9MR8AX9aoaLBamp;_nc_tp=25amp;oh=c46c751ed4e52e62775c446a3f29e5f9amp;oe=5FE0276C',
'profile_pic_id': '2281189669318307392_13046517447',
'is_verified': False,
'has_anonymous_profile_picture': False,
'account_badges': [
],
'latest_reel_media': 0,
'story_reel_media_ids': [
]
},
{
'pk': 8373043335,
'username': 'username3',
'full_name': 'name3',
'is_private': True,
'profile_pic_url': 'https: //instagram.fsin5-1.fna.fbcdn.net/v/t51.2885-19/s150x150/110630893_306355594052903_5751168818852707872_n.jpg?_nc_ht=instagram.fsin5-1.fna.fbcdn.netamp;_nc_ohc=SrVfiL5_r9cAX8yTCCvamp;_nc_tp=25amp;oh=68db435ac44869d772c16aed8cbdaeb1amp;oe=5FDDE888',
'profile_pic_id': '2358844203752433124_8373061335',
'is_verified': False,
'has_anonymous_profile_picture': False,
'account_badges': [
],
'latest_reel_media': 1605694021,
'story_reel_media_ids': [
]
}
],
'big_list': False,
'next_max_id': None,
'page_size': 200,
'status': 'ok'
}
Я вызываю словарь users_dict вместо «dict», как у вас было в вашем примере. После создания словаря users_dict мы присваиваем переменной с именем users значения, равные значениям в ключе «users» dict. Тогда все, что нам нужно сделать, это перебрать «пользователей»
users = users_dict["users"]
for user in users:
print(f"{user['username']}:{user['is_private']}")
Если я не понимаю, к чему вы стремитесь, это должно сработать.
Комментарии:
1. Работает безупречно, большое вам спасибо! Никогда не думал об этом, ха-ха