2016-05-03 1 views
-4

У меня есть сценарий, который извлекает json-данные из api, и я хочу, чтобы он затем вытащил указанные данные, расшифровал и выбрал те теги для хранения в db. Прямо сейчас мне просто нужно заставить скрипт возвращать определенные вызовы по значениям. это то, что похоже на сценарий, перед которым я пытаюсь его расшифровать.Как получить доступ к ключевым значениям в словарях json-файлов с помощью python

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.', 'votemart_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', 'camera': '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': Нет, '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 ',' camera ':' senate ', ' state_name ':' Indiana ',' fax ':' 202-225-6798 ',' phone ': ' 202-224-4814 ',' gender ':' M ',' senate_class ': 1,' fec_ids ': [' H4IN02101 ',' S2IN00091 '],' state ':' IN ',' votemart_id ': 34212, ' website ':' http://www.donnelly.senate.gov ',' name_suffix ':' Нет, '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 ': ' старший ',' 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', 'камера': 'senate', 'state_name': 'Indiana', 'fax': '202-228-1820', 'phone': '202-224-5623' , 'gender': 'M', 'senate_class': 3, 'fec_ids': ['S0IN00053'], 'state': 'IN', 'votemart_id': 53291, 'website': 'http://www.coats.senate.gov', ' суффикс': Нет, 'icpsr_id': 14806, 'не facebook_id': '180671148633644', 'CONTACT_FORM': 'http://www.coats.senate.gov/contact/', 'день рождения': '1943-05-16'}]}

вот данные JSON вернулся, я хочу особо призвать IE {'twitter_id': 'RepToddYoung'}, or {'first_name': 'Todd'}

Вместо моего сценария возвращения весь файл JSON, который он извлекает

ответ

0

Посмотрите на структуру данных, вы получаете обратно. Это словарь, содержащий список словарей. Вы можете получить доступ к списку с помощью 'results' ключа:

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

Оттуда словарь, содержащий элемент, который после того, как первый элемент списка, так:

d = l[0] 

А конкретные значения могут быть извлекаться из словаря:

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

Вы можете упростить, что это:

r.json()['results'][0]['twitter_id'] 
r.json()['results'][0]['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