расшифровка json-словаря с помощью python

Ive получил скрипт, написанный для получения данных из API, и вернул его, но теперь мне нужно проанализировать эти данные, это пример того, как выглядят данные json, с некоторыми значениями словаря, которые я ищу.

{'results': [{'icpsr_id': 21133, 'twitter_id': 'RepToddYoung', 'thomas_id': '02019', 'term_end': '2017-01-03', 'office': '1007 Longworth House Office Building', 'gender': 'M', 'phone': '202-225-5315', 

это код, который я написал, чтобы вытащить, и проанализировать файл данных json. может ли кто-нибудь сказать мне, что с ним не так? Я все еще возвращаю полное значение из словаря «results», имея в виду, что это похоже на то, что код ничего не сделал, я все равно получаю полный словарь, он не анализируется, а не ТОЛЬКО «twitter_id» и «office»,

 import requests import json def call(): payload = {'apikey':'my_apikey', 'zip':'74120'} bas_url = 'http://openstates.org/api/v1//legislators/?state=ok' r = requests.get(bas_url, params = payload) grab = r.json() return grab jsonResponse=json.loads(decoded_response) jsonData = jsonResponse["results"] for item in jsonData: chamber = item.get("twitter_id") last_name = item.get("office") 

Похоже, вы хотите что-то вроде этого:

 def call(): payload = {'apikey':'my_apikey', 'zip':'74120'} bas_url = 'http://openstates.org/api/v1//legislators/?state=ok' r = requests.get(bas_url, params = payload) grab = r.json() jsonData = grab["results"] return [{key: value for key, value in result.items() if key in ("twitter_id", "office")} for result in jsonData] 

Хорошо, глядя на онлайн-документы для модуля запросов, я вижу, что вызов r.json() выполнит разбор JSON для вас и вернет вам питон-питон. Вещь, которую вы публикуете, является выходом этого dict, поэтому часть JSON уже позаботилась о вас.

Этот код должен работать как на Python 2, так и на Python 3, как только вы извлекли данные в json_response, используя json_response = r.json() :

 extracted_values = [] json_data = json_response['results'] for item in json_data: subitem_dict = {} for key in 'twitter_id office'.split(): subitem_dict[key] = item.get(key) # will give None if key does not exist extracted_values.append(subitem_dict) print(extracted_values) 

печатает:

 [{'twitter_id': 'RepToddYoung', 'office': '1007 Longworth House Office Building'}, {'twitter_id': 'SenDonnelly', 'office': '720 Hart Senate Office Building'}, {'twitter_id': 'SenDanCoats', 'office': '493 Russell Senate Office Building'}]