2016-05-03 7 views
-4

私はAPIからjsonデータをプルするスクリプトを持っていますが、そのデータをプルしてデコードしてから、dbに格納するタグを選択します。今は、値を特定の値に戻すためにスクリプトを取得する必要があります。これは私がそれを解読しようとする前のスクリプトの様子です。Pythonでjsonファイル辞書のキー値にアクセスするには

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 

'結果':[{ 'twitter_id': 'RepToddYoung' は、 'ocd_id' 'OCD分割/国:米国/状態:/ CDで:9'、 'oc_email': '[email protected]'、 'middle_name': 'C.'、 'votesmart_id': 120345、 'first_name': 'Todd'、 'youtube_id': 'RepToddYoung'、 'last_name': '若者'、' bioguide_id ':' Y000064 '、' district ':9、 'ニックネーム ':なし、' office ':' 1007 Longworth House Office Building '、 ' term_start ':' 2015-01-06 '、' thomas_id ':' 02019 '、' party ':' R '、 ' in_office ':' title ':' Rep '、' govtrack_id ':' 412428 '、' crp_id ': 'N00030670'、 'term_end': '2017-01-03'、 'chamber': 'house'、 'state_name': 'Indiana'、 'fax': '202-226-6866'、 'phone': '、' gender ':' M '、' fec_ids ':[' H0IN09070 ']'状態 ': ' IN '、' website ':' http://toddyoung.house.gov '、' name_suffix ' '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':なし 'lis_id': 'S356'、 'first_name': 'joe'、 'youtube_id': 'sendonnelly'、 'last_name': 'Donnelly'、 'bioguide_id': 'D000607'、 'district':なし 'ニックネーム': なし 'office': '720ハート上級オフィスビル'、 '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 '、 '州名 ':' Indiana '、' fax ':' 202-225-6798 '、' phone ': ' 202-224-4814 '、' gender ':' M '、' senate_class ':1、' fec_ids ': [' H4IN02101 '、' S2IN00091 ']、'状態 ':' IN '、' votesmart_id ':34212、 'ウェブサイト ':' http://www.donnelly.senate.gov '、' name_suffix 'なし、 'icpsr_id':20717、 'facebook_id': '168059529893610'、 'contact_form': 'http://www.donnelly.senate.gov/contact/email-joe'、 'birthday': 'ocd_id': 'ocd-division/country:us/state:in'、 'oc_email': '[email protected]。'12 '、'12'、'12 '、'12'、'12 '、'12'、'12 '、'12'、'123 '、''office': '493 Russell Senate Office Building'、 'state_rank': 'senior'、 'thomas_id': '00209'、 'term_start': ''、 'C​​000542'、 'district' 2011年5月1日 '、' party ': ' R '、' in_office ':True、' title ':' Sen '、' govtrack_id ':' 402675 '、 ' crp_id ':' N00003845 '、' term_end ' : '2017-01-03'、 'chamber': 'senate'、 '州名': 'Indiana'、 'fax': '202-228-1820'、 'phone': '202-224-5623' 、 'gender': 'M'、 'senate_class':3、 'fec_ids': ['S0IN00053']、 '状態': 'IN'、 'votesmart_id':53291、 'website': 'http://www.coats.senate.gov' name_suffix ':なし、 'icpsr_id':14806、 'facebook_id': '180671148633644'、 'C​​ONTACT_FORM': 'http://www.coats.senate.gov/contact/'、 '誕生日': '1943年5月16日'}]}

JSONデータのthats返された、私は特にそれはあなたが戻ってきているデータ構造で

答えて

0

ルックを取得し、全体のJSONファイルを返すIE {'twitter_id': 'RepToddYoung'}, or {'first_name': 'Todd'}時に代わりに私のスクリプトの

を呼びたいです。これは辞書のリストを含む辞書です。そう、あなたが後にある項目を含む辞書は、リストの最初の項目である。そこから

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

:あなたはキー'results'を使用してリストにアクセスすることができます

d = l[0] 

そして、特定の値をすることができ

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

あなたはこれにそれを簡素化することができます:

辞書から検索し

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

出力は以下となります:

 
Todd Young: RepToddYoung 
Joe Donnelly: SenDonnelly 
Daniel Coats: SenDanCoats 

は、おそらくあなたは、リストを反復することになるでしょう

関連する問題