'Python3 for loop over a dict

I am trying to get all the values individually for each asset (BCHUSD and TRXUSD).

What I want to do is something like this:

BCHUSD a = 301.340000 b = 301.160000 c = 301.280000



TRXUSD a = 0.0609450 b = 0.0609440 c = 0.0609540 

Could someone tell me how I can do it please?

Regards!

import requests
import json



while True:    
    req = requests.get('https://api.kraken.com/0/public/Ticker?pair=BCHUSD,TRXUSD,XRPUSD')
    
    print(req)
    
    <Response [200]>
    
    print(type(req))
    
    <class 'requests.models.Response'>
    
    obj = req.json()
    
    print(type(obj))
    
    <class 'dict'>
    
        
    for k, v in obj.items():
        if type(v) is dict and k:
            for nk, nv in v.items():
                print(nk, nv)
                
                
    BCHUSD {'a': ['298.240000', '11', '11.000'], 'b': ['298.040000', '3', '3.000'], 'c': 
    ['299.000000', '0.89507885'], 'v': ['38.42175237', '5614.56089299'], 'p': 
    ['300.890848', '277.650439'], 't': [24, 2314], 'l': ['299.000000', '260.000000'], 'h': 
    ['302.390000', '309.900000'], 'o': '299.000000'}
    TRXUSD {'a': ['0.0608250', '4881', '4881.000'], 'b': ['0.0607820', '40500', 
    '40500.000'], 'c': ['0.0608630', '81.94337742'], 'v': ['21067.61432979', 
    '9622286.56922629'], 'p': ['0.0610566', '0.0589675'], 't': [25, 1729], 'l': 
    ['0.0608630', '0.0562060'], 'h': ['0.0612840', '0.0618410'], 'o': '0.0611130'}
    XXRPZUSD {'a': ['0.69018000', '666', '666.000'], 'b': ['0.69000000', '42829', 
    '42829.000'], 'c': ['0.69022000', '358.00000000'], 'v': ['287549.02071579', 
    '27810492.67564827'], 'p': ['0.69737332', '0.65981291'], 't': [429, 10340], 'l': 
    ['0.69000000', '0.62229000'], 'h': ['0.70386000', '0.72105000'], 'o': '0.69935000'}


Solution 1:[1]

I think the following could help you as a starting point:

response_json = {
    "title": "name",
    "abc": {'a': [1,2,3], "b": [2,3,4]},
    "ohter_stuff": "xxx",
    "xyz": {'a': [10, 20 ,30], "b": [20, 30, 40]}
}

# select relevant key value pairs
data = {
    key: value for key, value in response_json.items() 
    if isinstance(value, dict)
}

# get the inner subdict index length
length = len(data['abc']['a'])
# get the inner subdict keys
items = list(data['abc'].keys())

# loop and print
for index in range(length):
    for name, subdict in data.items():
        # join the items at index pairs into a string
        index_items = " ".join(
            f"{item} = {subdict[item][index]}" 
            for item in items
        )
        print(name, index_items)

This is a pure standard library python solution. If you can install other libraries, I would recommend to have a look into pandas.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Carlos Horn