skip to Main Content

I have the following json data about experts.

result={
        "experts":[
  {
    "thumbnail": "https://scholar.googleusercontent.com/citations?view_op=small_photo&user=JicYPdAAAAAJ&citpid=2",
    "name": "Geoffrey Hinton",
    "link": "https://scholar.google.com/citations?hl=en&user=JicYPdAAAAAJ",
    "author_id": "JicYPdAAAAAJ",
    "email": "Verified email at cs.toronto.edu",
    "affiliations": "Emeritus Prof. Comp Sci, U.Toronto & Engineering Fellow, Google",
    "cited_by": 638900,
    "interests": [
      {
        "title": "machine learning",
        "serpapi_link": "https://serpapi.com/search.json?engine=google_scholar_profiles&hl=en&mauthors=label%3Amachine_learning",
        "link": "https://scholar.google.com/citations?hl=en&view_op=search_authors&mauthors=label:machine_learning"
      },
      {
        "title": "psychology",
        "serpapi_link": "https://serpapi.com/search.json?engine=google_scholar_profiles&hl=en&mauthors=label%3Apsychology",
        "link": "https://scholar.google.com/citations?hl=en&view_op=search_authors&mauthors=label:psychology"
      },
      {
        "title": "artificial intelligence",
        "serpapi_link": "https://serpapi.com/search.json?engine=google_scholar_profiles&hl=en&mauthors=label%3Aartificial_intelligence",
        "link": "https://scholar.google.com/citations?hl=en&view_op=search_authors&mauthors=label:artificial_intelligence"
      },
      {
        "title": "cognitive science",
        "serpapi_link": "https://serpapi.com/search.json?engine=google_scholar_profiles&hl=en&mauthors=label%3Acognitive_science",
        "link": "https://scholar.google.com/citations?hl=en&view_op=search_authors&mauthors=label:cognitive_science"
      },
      {
        "title": "computer science",
        "serpapi_link": "https://serpapi.com/search.json?engine=google_scholar_profiles&hl=en&mauthors=label%3Acomputer_science",
        "link": "https://scholar.google.com/citations?hl=en&view_op=search_authors&mauthors=label:computer_science"
      }
    ]
  },
  {
    "thumbnail": "https://scholar.googleusercontent.com/citations?view_op=small_photo&user=kukA0LcAAAAJ&citpid=3",
    "name": "Yoshua Bengio",
    "link": "https://scholar.google.com/citations?hl=en&user=kukA0LcAAAAJ",
    "author_id": "kukA0LcAAAAJ",
    "email": "Verified email at umontreal.ca",
    "affiliations": "Professor of computer science, University of Montreal, Mila, IVADO, CIFAR",
    "cited_by": 605714,
    "interests": [
      {
        "title": "Machine learning",
        "serpapi_link": "https://serpapi.com/search.json?engine=google_scholar_profiles&hl=en&mauthors=label%3Amachine_learning",
        "link": "https://scholar.google.com/citations?hl=en&view_op=search_authors&mauthors=label:machine_learning"
      },
      {
        "title": "deep learning",
        "serpapi_link": "https://serpapi.com/search.json?engine=google_scholar_profiles&hl=en&mauthors=label%3Adeep_learning",
        "link": "https://scholar.google.com/citations?hl=en&view_op=search_authors&mauthors=label:deep_learning"
      },
      {
        "title": "artificial intelligence",
        "serpapi_link": "https://serpapi.com/search.json?engine=google_scholar_profiles&hl=en&mauthors=label%3Aartificial_intelligence",
        "link": "https://scholar.google.com/citations?hl=en&view_op=search_authors&mauthors=label:artificial_intelligence"
      }
    ]
  }
        ]
    }

Given an input of "author_id" I want to get all the data related to that "author_id".For example if I give the input "JicYPdAAAJ" i want to get the thumbnail,name,email,link,affilations,etc and all the related with that author id from the list of Json data.In this case all the related data about Geoffrey Hinton will be returned.
How do I write a function to achieve this?So far I tried using key value matching but the logic does not seem to work.
Hope somebody helps

3

Answers


  1. Iterate over the list and find the author id:

    def get_expert_details(author_id: str) -> dict:
        for expert in result['experts']:
            if expert['author_id'] == author_id:
                return expert
    
    Login or Signup to reply.
  2. You can just iterate over the all authors and check if ‘author_id’ is the same as you provided. example:

    SEARCH_ID = 'kukA0LcAAAAJ'
    for enum, expert in enumerate(result['experts']):
        if result['experts'][enum]['author_id'] == SEARCH_ID:
            print(result['experts'][enum]['name'])  # PRINT key NAME
    

    which returns
    Yoshua Bengio
    you can edit this code to print whatever data you want.

    Login or Signup to reply.
  3. You can use list comprehension – https://docs.python.org/3/tutorial/datastructures.html#list-comprehensions

    answer = [expression for item in iterable if condition == True]
    

    In your case:

    answer = [x for x in result["experts"] if x["author_id"] == "JicYPdAAAAAJ"]
    

    Note – this will return a list with the data you are looking for.

    Also you have an error in your question. The id mentioned in the text, "JicYPdAAAJ", is different to the id in your data, "JicYPdAAAAAJ"

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search