从另一个函数调用字典

时间:2018-12-15 02:21:14

标签: python dictionary

我在将字典调用到下一个函数时遇到问题。第一个函数返回元组

{'CSCA20': ['2017-12-13', '14:00'], 'CSCA67': ['2017-12-18', '9:00'], 'CSCA08': ['2017-12-13', '9:00']}

但是当我尝试在第二个函数中调用并打印它时,我得到一个空的元组。有人知道为什么以及如何解决该错误吗?

def create_course_dict(openfile):
    d = {}
    f = openfile
    f.readline()
    for line in f:
        line = line.strip().split(',')
        d[line[0]] = line[1:]

    return d

def ceate_date_dict(d):
    old_dict = {}
    old_dict = create_course_dict(openfile)
    print(old_dict)

with open('courses.csv') as openfile:
    print(create_course_dict(openfile))
    d = (create_course_dict(openfile)) 
    ceate_date_dict(d)

1 个答案:

答案 0 :(得分:1)

问题是您两次致电create_course_dict()。第一次调用将读取文件中的所有行,然后打印字典。

第二次调用时,您位于文件的末尾,因此没有任何内容可供读取。因此,第二个调用返回一个空字典。

真的没有理由重复两次。调用一次,将结果分配给变量,然后使用变量:

with open('courses.csv') as openfile:
    d = (create_course_dict(openfile)) 
    print(d)
    ceate_date_dict(d)

但是,如果您确实希望能够多次调用它,则可以让它首先搜索文件的开头。

def create_course_dict(openfile):
    d = {}
    f = openfile
    f.seek(0)
    f.readline()
    for line in f:
        line = line.strip().split(',')
        d[line[0]] = line[1:]

    return d