首页 > 解决方案 > 打印字典条目的索引号,加上它的键,加上它的值

问题描述

假设我们有以下数据框

import yfinance as yf 
import numpy as np
import numpy_financial as npf
import matplotlib.pyplot as plt
from os import system
import sys, time
import pandas as pd
import requests


import ssl

ssl._create_default_https_context = ssl._create_unverified_context

url_link = 'https://finance.yahoo.com/quote/TSLA/analysis?p=TSLA'
r = requests.get(url_link,headers ={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'})

data = pd.read_html(r.text)
data = data[0]
data = data[data['Earnings Estimate'] == 'Avg. Estimate']

data.plot(kind='bar')

data = yf.Ticker("TSLA")

以下操作很简单

for key, value in data.info.items():
    print(f"{key} : {value}")
    print("")

这将逐行打印出每个字典条目,中间有一个空格。

keys_list = list(data.info.keys())
values_list = list(data.info.values())

这些操作将字典的键和值分离到它们自己不同的列表中。这使得可以执行以下两个操作之一...

for key in data.info.keys():
    print(str(keys_list.index(key)) + ". " + str( key ))  

for value in data.info.values():
    print(str(values_list.index(value)) + ". " + str( value ))

这些都很好,他们所做的就是打印出一个索引号,加上列表中项目的 sring 值。

但我想要的是打印出一个索引号,然后是键,然后是值,

使输出格式看起来像

1. key: value
2. key: value
3: key: value

我尝试在 for 循环中创建一个变量来表示一个整数以及键/值,但我收到以下错误消息

valueError: too many values to unpack (expected 3, got 2)

所以真的我不确定我还应该尝试将输出转换为所需的格式。

标签: pythonpython-3.xfinance

解决方案


用于items()将键和值放在一起。用于enumerate()返回索引以及形成迭代器的值。

for i, (key, value) in enumerate(data.info.items(), 1):
    print(f"{i}. {key}: {value}")

请注意,您必须在元组key中进行分组value,因为这是items()每个元素返回的内容。


推荐阅读