评估列表中列表中某个索引的项目

时间:2014-03-27 12:43:33

标签: python list iteration

我正在制作一个程序,列出学生,他们的学位和课程,以及其他用于浏览的内容。我还没有能够绕过在列表列表中迭代特定索引项的方法。列表列表包含以下学生信息:

[['2004S','3001','Johnson John','149','HETY2','STIL'],
['2004S','3002','Steveson Steve','224','HETY2','SEIT'],
['2004S','3003','Jackson Jack','270','HETY2','SEIT'],
...
['2007S','3124','Ericsson Eric','286','HETY2','SPII']]

我想要做的是使用Entry小部件中的输入来评估每个列表的第一项。第一项是学生开始学习的那一年。因此,在Entry字段中,我会询问用户想要浏览哪些年份的学生。如果值的计算结果为true,我会将整个列表附加到另一个列表中,所有这些列表都会在稍后显示在屏幕上。像这样:

class Model():
...
    def searched_year(self, year):
        for object in self.student.parse_student_info():
            for elem in range(len(self.student.parse_student_info())):
                matching = [object for elem in object if str(year) in elem]
        return matching

parse_student_info()课程中调用Student方法,其中包含'学生' object,它返回整个列表列表,如上所示。争论的年份'是我从Entry小部件获得的StringVar。此代码每次都返回一个空列表(并且尚未将搜索限制为索引)。这样做的最佳方式是什么?

编辑:

更重要的代码:

class Student():
...
    def parse_student_info(self):
        with open('opiskelijat.txt', 'r') as src:
            separ = src.readlines()
            studentinfo = [elem.strip().split(';') for elem in separ]
            return studentinfo

这是parse_student_info()类中的Student方法。它返回您在上面看到的列表列表。它按预期工作。下面是调用相关方法的search_year()方法。

UIController():
...
    def search_year(self, year):
        mode = Model()
        return mode.searched_year(year)

UIController类控制包含按钮和其他小部件的所有不同Frame类,并且它还与处理来自Model的信息的Student类进行交互。 ,CourseDegree类。

到目前为止,该方法仍然会打印一个空列表。

1 个答案:

答案 0 :(得分:0)

目标是获取parse_student_info()的输出并返回列表列表,其中每个子列表的第一个元素与给定值匹配,是吗?试试这个:

def searched_year(self, year):
    return [rec for rec in self.student.parse_student_info() if rec[0] is year]