json格式的数据就是python中的字典_如何使用python访问json文件字典中的键值

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':

'Rep.Toddyoung@opencongress.org', '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':

'Sen.Donnelly@opencongress.org', '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':

'Sen.Coats@opencongress.org', '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

解决方案

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值