В Python3 каков синтаксис для указания указанного c подобъекта? - PullRequest
0 голосов
/ 27 марта 2020

Я захожу в сеть JSON, использую запрос и json. Я могу вызывать первичные объекты из массива, но не могу понять синтаксис для вызова подобъекта или объекта внутри объекта. Вот фрагмент JSON, с которым я работаю:

[
  {
     "round":1,
     "roster_id":null,
     "player_id":"4034",
     "picked_by":"343691457850322944",
     "pick_no":1,
     "metadata": 

    {
       "years_exp":"3",
       "team":"CAR",
       "status":"Active",
       "sport":"nfl",
       "position":"RB",
       "player_id":"4034",
       "number":"22",
       "news_updated":"1577664318550",
       "last_name":"McCaffrey",
       "injury_status":"",
       "first_name":"Christian"},

     "is_keeper":null,
     "draft_slot":1,
     "draft_id":"549087829381697536"},

А вот мой полный код. Я оставил фрагмент проблемного раздела внизу. Мой код работает нормально, но он просто дает мне ВСЕ метаданные. Я пытаюсь получить только метаданные / first_name / last_name / position. (Мне нужны только эти элементы из метаданных).

import requests
import json

def job():

    print('What is Sleeper App user name?')
    user_name = (input())

    user_data = requests.get("https://api.sleeper.app/v1/user/"+user_name).json()

    user = (user_data['user_id'])

    print("User ID:"+user+"\n")

    draft_data = requests.get("https://api.sleeper.app/v1/user/"+user+"/drafts/nfl/2020").json()

    draft_lists = []

    for item in draft_data:
        draft_details = {'draft_id':None}
        draft_details = item['draft_id']
        draft_lists.append(draft_details)
    print(user_name+"Draft Id's"+"\n")
    print(draft_lists)
    print("\n")
    print("Type the Draft ID that you would like to inspect")
    draftinput = (input())

    draftpickdata = requests.get("https://api.sleeper.app/v1/draft/"+draftinput+"/picks").json()

    draft_picks = []

    for item in draftpickdata:
        pick_details = {'pick_no':None}, {'metadata':{'position'}}
        pick_details = item['pick_no'] 
        pick_details = item['metadata']
        draft_picks.append(pick_details)

    print("Draft "+draftinput+" Picks \n" + str(draft_picks))

while True:
    try:
        job()
    except:
        print("Invalid User Name"+"\n")
        pass

Вы можете запустить мой код здесь, если хотите: https://repl.it/@weston6949 / DraftPicksWork

Проблемный раздел Фрагмент:

draftinput = (input())
draftpickdata = requests.get("https://api.sleeper.app/v1/draft/"+draftinput+"/picks").json()
draft_picks = []
for item in draftpickdata:
    pick_details = {'pick_no':None}, {'metadata':{'position'}}
    pick_details = item['pick_no'] 
    pick_details = item['metadata']
    draft_picks.append(pick_details)
print("Draft "+draftinput+" Picks \n" + str(draft_picks))

1 Ответ

0 голосов
/ 28 марта 2020

Спасибо, вот что сработало:

draftpickdata = requests.get("https://api.sleeper.app/v1/draft/" + draftinput + "/picks").json()

draft_picks = []

for item in draftpickdata:
    pick_details = item['pick_no'], item['metadata']['first_name'], item['metadata']['last_name'], item['metadata']['position'] 
    draft_picks.append(pick_details)

print("Draft "+draftinput+" Picks \n" + str(draft_picks))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...