python - 使用日期作为键将日期和股票价格列表制作成字典并将价格转换为浮点数-python
问题描述
我正在创建一个用户输入文件名的程序。文件 apple.dat 包含苹果的所有日期和股票价格。现在我将所有数据都放在一个列表中。我需要一些帮助将列表放入字典并使用日期(保留为字符串)作为键并将股票价格转换为浮点值。
苹果.dat 文件
Date,Open,High,Low,Close,Adj Close,Volume
2020-01-02,74.059998,75.150002,73.797501,75.087502,74.333511,135480400
2020-01-03,74.287498,75.144997,74.125000,74.357498,73.610840,146322800
我得到的输出
['2020-01-02,74.059998,75.150002,73.797501,75.087502,74.333511,135480400\n', '2020-01-03,74.287498,75.144997,74.125000,74.357498,73.610840,146322800\n'...]
代码
def createdict(file_name):
with open('apple.dat','r') as f:
lines = f.readlines()[1:]
return lines
def main():
print("Welcome to the Stock Price Program")
print()
file_name=input("Enter the data file name: ")
list=createdict(file_name)
print(list)
解决方案
这是一种使用 csv 库(特别是DictReader
构造函数)的方法。它使解决方案更简单地按名称寻址字段名,而不是按列号寻址它们。
import csv
apl_stk = list()
with open('apple.dat', 'r') as f:
reader = csv.DictReader(f)
for dictionary in reader:
apl_stk.append(dictionary)
def avg(L, field):
return sum(map(lambda x: float(x[field]), L)) / len(L)
def minimum(L, field):
return min(map(lambda x: float(x[field]), L))
print(f"Avg. high: {avg(apl_stk, 'High'):.6f}")
print('minimum open:', minimum(apl_stk, 'Open'))
对于您的示例输入数据,将打印:
Avg. high: 75.147500
minimum open: 74.059998
推荐阅读
- android-studio - 在 Android Studio 中禁用多项选择?
- python-3.x - 使用 pandas 数据框创建气泡图
- kubernetes - 在 Google Kubernetes Engine 上安装 Gitlab Runner
- r - 无法使用 rlang 将因子转换为字符向量
- xamarin - 我在 CollectionView 中有一个扩展器
- vue.js - 弹出在彼此之上 VUEJS3
- javascript - 如何根据键组合对象数组:每个对象的值?
- javascript - Puppeteer - 需要帮助从 h2 和 span 中提取文本
- sideloading - 无法侧面加载基于 WAP 的安装包 - AppInstaller.Exe 失败并出现一般错误代码
- shopware - Shopware 6:为客户群隐藏产品