Я новичок в кодировании на Python и столкнулся с неожиданной ошибкой в моем коде. Любая помощь с этим будет высоко ценится
import json from urllib2 import urlopen response = urlopen("https://finance.yahoo.com/webservice/v1/symbols/allcurrencies/quote?format=json") source = response.read() # print(source) data = json.loads(source) # print(json.dumps(data, indent=2)) usd_rates = dict() for item in data['list']['resources']: name = item['resource']['fields']['name'] price = item['resource']['fields']['price'] usd_rates[name] = price print name, price
Используйте get для получения значения из json / dict и используйте проверку None.
import json from urllib2 import urlopen response = urlopen("https://finance.yahoo.com/webservice/v1/symbols/allcurrencies/quote?format=json") source = response.read() # print(source) data = json.loads(source) # print(json.dumps(data, indent=2)) usd_rates = dict() for item in data['list']['resources']: name = item.get('resource').get('fields').get('name') price = item.get('resource').get('fields').get('price') if name is not None: usd_rates[name] = price print name, price
Вы получаете ошибку, потому что нет тега 'name' в 'resource'> 'fields'.
Вы можете добавить проверку, если вы не получите тег 'name' всегда:
name = item['resource']['fields'].get('name', '')