Добавление данных в список из JSON-файла, удаленного из Интернета, с помощью urllib - PullRequest
0 голосов
/ 27 сентября 2018

Данные удалены с веб-сайта:

 {'data': {'id': 1, 'name': 'Bitcoin', 'symbol': 'BTC', 'website_slug': 'bitcoin', 'rank': 1, 'circulating_supply': 17290912.0, 'total_supply': 17290912.0, 'max_supply': 21000000.0, 'quotes': {'USD': {'price': 6468.27571485, 'volume_24h': 4319636048.09599, 'market_cap': 111842386177.0, 'percent_change_1h': -0.31, 'percent_change_24h': 0.01, 'percent_change_7d': 0.76}}, 'last_updated': 1538037891}, 'metadata': {'timestamp': 1538037295, 'error': None}}

Я не могу получить доступ к переменной price, потому что она вложена в список.Есть ли способ сделать это в Python?

Я пытался:

databs.append(data.get('USD', {}).get('price'))

, но это возвращает None

Полный код:

c_list = ["1","52", "1958","1042"]

databs = []

def get_values():
    t1 = time.time()
    for i in c_list:
        with urllib.request.urlopen("https://....") as url:
            data = json.loads(url.read().decode())
            #print(data) # This prints the list and i see the values are present
            databs.append(data.get('USD', {}).get('price'))
    a_current =databs[0]
    b_current =databs[1]
    c_current =databs[2]
    d_current =databs[3]
    print(databs)

while True:
    get_values()

возвращает [None, None, None, None]

1 Ответ

0 голосов
/ 27 сентября 2018

Чтобы получить доступ к вложенным диктам, вы можете попробовать что-то похожее на это:

def getDictValue(dic, key):
    for item in key.split('.'):
        if item in dic:
            dic = dic[item]
        else:
            return None
    return dic

Для доступа к price, например: price = getDictValue(data, 'data.quotes.USD.price')

...