Search code examples
pythonloopsdictionaryyfinance

Create dictionary with tickers as keys and values as stock prices


Is there a better way to achieve what the code below does? The list 'tickers' is a combination of stock tickers (e.g. AAPL, IBM)

list1 = tickers
list2 = []
dct = {}
count = 0

for i in tickers:
    list2.extend(yf.Ticker(i).history(period='7d')['Close'])
    dct[i] = list2[count:]
    count+=7

Solution

  • Since len(yf.Ticker(i).history(period='7d')['Close'])==7, it seems redundant to extend a list and then slice off the items appended to the list. So instead of the convoluted loop, use a dict comprehension:

    dct = {i: yf.Ticker(i).history(period='7d')['Close'] for i in tickers}
    

    As an explicit loop:

    dct = {}
    for i in tickers:
        dct[i] = yf.Ticker(i).history(period='7d')['Close']