如何使用.get函数获取csv文件字典以正确返回某些值

时间:2019-10-27 00:57:46

标签: python csv dictionary

import csv

def csv_dict_list(csv_file):
    reader = csv.DictReader(open(csv_file, "r"))
    dict_list = []
    for line in reader:
        dict_list.append(line)
    return dict_list # [line for line in reader]

def applestock(dict_list):
    retVal = []
    for line in dict_list:
        retVal.append(line.get("AAPL"))    
    return retVal # [line.get("AAPL") for line in dict_list]

stocks = csv_dict_list("newcsv.csv")
apple = applestock(stocks)
print(apple)

因此,我有一个程序,该程序需要一个csv文件并将其转换为字典,然后附加这些行。 csv文件包含来自三个不同公司的股票。这是csv文件中文本的示例:

Symbol,DateAdj,关闭

AAPL,2012年2月6日,58.064457

AAPL,1/12 / 2018,173.059113

因此,我要做的是从字典中获取所有值,并打印出公司拥有的最高存货,以及存货的日期。我的程序当前有一个line.get函数,该函数尝试获取所有APL数据行并将其返回,但是line.get函数不起作用,也没有返回苹果库存,仅不返回苹果库存。

我只需要.get函数的帮助,使其正常工作并有效地退还库存。

我只用第一个函数运行了程序,这是字典中返回的一些值:

[OrderedDict([('SymbolDateAdj Close', '')]), OrderedDict([('SymbolDateAdj Close', 'AAPL2/6/201258.064457')]), OrderedDict([('SymbolDateAdj Close', '')]), OrderedDict([('SymbolDateAdj Close', 'AAPL1/12/2018173.059113')])

1 个答案:

答案 0 :(得分:0)

此行

retVal.append(line.get("AAPL")) 

line.get("AAPL")的结果添加到列表中。如果行包含 key “ AAPL”,则line.get("AAPL")返回line,否则返回None。在您的csv行中,“ AAPL”是一个,键是“ Symbol”,因此代码应为

for line in dict_list:
    if line.get("Symbol") == "AAPL":
        retval.append(line)

此代码获取“ Symbol”键的值,如果该值为“ AAPL”,则将该行添加到列表中。