从另一个函数调用字典

2024-04-19 22:00:39 发布

您现在位置:Python中文网/ 问答频道 /正文

伙计们,我在调用字典进入下一个函数时遇到了问题。第一个函数返回元组

{'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)

Tags: 函数date字典defcreatelineolddict
1条回答
网友
1楼 · 发布于 2024-04-19 22:00:39

问题是你打了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

相关问题 更多 >