【问题标题】:How to access key values in a json files dictionaries with python如何使用python访问json文件字典中的键值
【发布时间】:2016-08-27 22:55:41
【问题描述】:

我有一个从 api 提取 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 分区/国家:美国/州:in/cd:9','oc_email': 'Rep.Toddyoung@opencongress.org','middle_name':'C.','votesmart_id': 120345,'first_name':'Todd','youtube_id':'RepToddYoung', '姓氏':'年轻','bioguide_id':'Y000064','区':9, '昵称':无,'office':'1007 Longworth House办公楼', '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', '房间': '房子', “州名”:“印第安纳州”、“传真”:“202-226-6866”、“电话”: '202-225-5315','性别':'M','fec_ids':['H0IN09070'],'状态': 'IN','网站':'http://toddyoung.house.gov','name_suffix':无, 'icpsr_id':21133,'facebook_id':'186203844738421','contact_form': 'https://toddyoungforms.house.gov/give-me-your-opinion', '生日': '1972-08-24'},{'twitter_id':'SenDonnelly','ocd_id': 'ocd 部门/国家:美国/州:在','oc_email': 'Sen.Donnelly@opencongress.org','middle_name':无,'lis_id': 'S356','first_name':'Joe','youtube_id':'sendonnelly','last_name': '唐纳利','bioguide_id':'D000607','区':无,'昵称': 无,“办公室”:“哈特参议院办公大楼 720 号”,“state_rank”: '初级','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':'参议院', “州名”:“印第安纳州”、“传真”:“202-225-6798”、“电话”: '202-224-4814','性别':'M','senate_class':1,'fec_ids': ['H4IN02101', 'S2IN00091'], 'state': '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', '生日': '1955-09-28'},{'twitter_id':'SenDanCoats','ocd_id': 'ocd 部门/国家:美国/州:在','oc_email': 'Sen.Coats@opencongress.org','middle_name':'Ray','lis_id':'S212', 'first_name':'丹尼尔','youtube_id':'SenatorCoats','last_name': '外套','bioguide_id':'C000542','区':无,'昵称':无, “办公室”:“罗素参议院办公大楼 493 号”,“州排名”: '高级','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': '参议院', “州名”:“印第安纳州”、“传真”:“202-228-1820”、“电话”: '202-224-5623','性别':'M','senate_class':3,'fec_ids': ['S0IN00053'],'状态':'IN','votesmart_id':53291,'网站': 'http://www.coats.senate.gov','name_suffix':无,'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 文件

【问题讨论】:

    标签: python json decode


    【解决方案1】:

    查看您返回的数据结构。它是一个包含字典列表的字典。您可以使用'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))
    

    将输出:

    托德杨:RepToddYoung 乔唐纳利:森唐纳利 Daniel Coats: SenDanCoats

    【讨论】:

      猜你喜欢
      • 2015-08-29
      • 1970-01-01
      • 2021-04-19
      • 1970-01-01
      • 2021-10-28
      • 1970-01-01
      • 1970-01-01
      • 2022-11-22
      • 1970-01-01
      相关资源
      最近更新 更多