python - 打印字典条目的索引号,加上它的键,加上它的值
问题描述
假设我们有以下数据框
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)
所以真的我不确定我还应该尝试将输出转换为所需的格式。
解决方案
用于items()
将键和值放在一起。用于enumerate()
返回索引以及形成迭代器的值。
for i, (key, value) in enumerate(data.info.items(), 1):
print(f"{i}. {key}: {value}")
请注意,您必须在元组key
中进行分组value
,因为这是items()
每个元素返回的内容。
推荐阅读
- python - 如何通过pyside6通过websocket订阅binance?
- java - 如何修复 DataHandler 异常
- python - Python - NC 文件奇怪的结果
- php - 如何在 PHP 中获取以“@”和数字开头的最后一个字符串?
- javascript - 为什么不显示存储的对象?
- php - WooCommerce:在自定义循环中添加产品选项卡
- json - 从python中的http响应中删除k,v
- node.js - Discord.js 异步和等待
- python - 如何退出第二个循环以增加我的第一个循环以创建两个二维数组?
- python - 如何防止 QGraphicsItem 相互碰撞