How to access key values in a json files dictionaries with python

2024/7/7 14:23:52

I have a script that pulls json data from an api, and I want it to then after pulling said data, decode and pick which tags to store into a db. Right now I just need to get the script to return specific called upon values. this is what the script looks like, before me trying to decode it.

import requests
def call():
payload = {'apikey':'945e8e8499474b7e8d2bc17d87191bce', 'zip' : '47120'}
bas_url = 'http://congress.api.sunlightfoundation.com/legislators/locate'
r = requests.get(bas_url, params = payload)
grab = r.json()
return grab

'results': [{'twitter_id': 'RepToddYoung', 'ocd_id':'ocd-division/country:us/state:in/cd:9', 'oc_email':'[email protected]', 'middle_name': 'C.', 'votesmart_id':120345, 'first_name': 'Todd', 'youtube_id': 'RepToddYoung','last_name': 'Young', 'bioguide_id': 'Y000064', 'district': 9,'nickname': None, 'office': '1007 Longworth House Office Building','term_start': '2015-01-06', 'thomas_id': '02019', 'party': 'R','in_office': True, 'title': 'Rep', 'govtrack_id': '412428', 'crp_id':'N00030670', 'term_end': '2017-01-03', 'chamber': 'house','state_name': 'Indiana', 'fax': '202-226-6866', 'phone':'202-225-5315', 'gender': 'M', 'fec_ids': ['H0IN09070'], 'state':'IN', 'website': 'http://toddyoung.house.gov', 'name_suffix': None,'icpsr_id': 21133, 'facebook_id': '186203844738421', 'contact_form':'https://toddyoungforms.house.gov/give-me-your-opinion', 'birthday':'1972-08-24'}, {'twitter_id': 'SenDonnelly', 'ocd_id':'ocd-division/country:us/state:in', 'oc_email':'[email protected]', 'middle_name': None, 'lis_id':'S356', 'first_name': 'Joe', 'youtube_id': 'sendonnelly', 'last_name':'Donnelly', 'bioguide_id': 'D000607', 'district': None, 'nickname':None, 'office': '720 Hart Senate Office Building', 'state_rank':'junior', 'thomas_id': '01850', 'term_start': '2013-01-03', 'party':'D', 'in_office': True, 'title': 'Sen', 'govtrack_id': '412205','crp_id': 'N00026586', 'term_end': '2019-01-03', 'chamber': 'senate','state_name': 'Indiana', 'fax': '202-225-6798', 'phone':'202-224-4814', 'gender': 'M', 'senate_class': 1, 'fec_ids':['H4IN02101', 'S2IN00091'], 'state': 'IN', 'votesmart_id': 34212,'website': 'http://www.donnelly.senate.gov', 'name_suffix': None,'icpsr_id': 20717, 'facebook_id': '168059529893610', 'contact_form':'http://www.donnelly.senate.gov/contact/email-joe', 'birthday':'1955-09-28'}, {'twitter_id': 'SenDanCoats', 'ocd_id':'ocd-division/country:us/state:in', 'oc_email':'[email protected]', 'middle_name': 'Ray', 'lis_id': 'S212','first_name': 'Daniel', 'youtube_id': 'SenatorCoats', 'last_name':'Coats', 'bioguide_id': 'C000542', 'district': None, 'nickname': None,'office': '493 Russell Senate Office Building', 'state_rank':'senior', 'thomas_id': '00209', 'term_start': '2011-01-05', 'party':'R', 'in_office': True, 'title': 'Sen', 'govtrack_id': '402675','crp_id': 'N00003845', 'term_end': '2017-01-03', 'chamber': 'senate','state_name': 'Indiana', 'fax': '202-228-1820', 'phone':'202-224-5623', 'gender': 'M', 'senate_class': 3, 'fec_ids':['S0IN00053'], 'state': 'IN', 'votesmart_id': 53291, 'website':'http://www.coats.senate.gov', 'name_suffix': None, 'icpsr_id': 14806,'facebook_id': '180671148633644', 'contact_form':'http://www.coats.senate.gov/contact/', 'birthday': '1943-05-16'}]}

thats the json data returned, i want to specifically call upon IE {'twitter_id': 'RepToddYoung'}, or {'first_name': 'Todd'}

Instead of my script returning the entire json file that it retrieves

Answer

Look at the data structure that you are getting back. It's a dictionary that contains a list of dictionaries. You can access the list using the 'results' key:

l = r.json()['results']

From there the dictionary containing the item you are after is the first item of the list, so:

d = l[0]

And the specific values can be retrieved from the dictionary:

print(d['twitter_id'])
print(d['first_name'])

You can simplify that to this:

r.json()['results'][0]['twitter_id']
r.json()['results'][0]['first_name']

Probably you will want to iterate over the list:

for d in r.json()['results']:print('{first_name} {last_name}: {twitter_id}'.format(**d))

which will output:

Todd Young: RepToddYoung
Joe Donnelly: SenDonnelly
Daniel Coats: SenDanCoats
https://en.xdnf.cn/q/120679.html

Related Q&A

How to use sin(x) and cos(x) functions with eval

I need a program which can make graphs by matplotlib with functions I write in the console. But it doesnt work with trigonometric functions. The code I already wrote is:from numpy import linspace impo…

python - whats the difference between = and ==? [duplicate]

This question already has answers here:What do the symbols "=" and "==" mean in python? When is each used?(5 answers)Closed 5 years ago.I wonder know whats the difference between …

Sorting images by dates into a list from a dictionary

I know I asked this before, but Im still not sure why I just get an empty list when I test thisdef sorted_images(image_dict): (dict) -> list of strGiven an image dictionary return a list of the file…

multiple search and replace in python

I need to search in a parent folder all files that are config.xml and in those files replace one string in another. (from this-is to where-as)

how do I convert the first letter of every word in a list from upper case to lower case? [duplicate]

This question already has answers here:How to downcase the first character of a string?(9 answers)Closed 6 years ago.how do I convert the first letter of each of the below from upper case to lowere ca…

Ubuntu 11.04: Installing PIL into a virtualenv with PIP [closed]

Its difficult to tell what is being asked here. This question is ambiguous, vague, incomplete, overly broad, or rhetorical and cannot be reasonably answered in its current form. For help clarifying thi…

What does this error mean ? Expected an indented block Python [duplicate]

This question already has answers here:Im getting an IndentationError (or a TabError). How do I fix it?(6 answers)Closed 7 months ago.My code is the following:def value(one,two): if one < two: retu…

Why is len(file.read()) giving me a value of zero?

Why are the values of print len() different for both functions? Are they not the same?The file this script is opening was a text file with three lines of text. i named it test.txt and inside it was J…

Re-formatting user input with spaces

Im using an input function where I want to convert any spaces in the input to +s. So for example, if the user inputs iphone 7 black, I want to convert this to iphone+7+black.

How to set a pdf background color? [closed]

Closed. This question needs details or clarity. It is not currently accepting answers.Want to improve this question? Add details and clarify the problem by editing this post.Closed 4 years ago.Improve…