尝试过滤列表以带回具有特定单词的行

时间:2014-10-02 20:56:03

标签: python-2.7

我刚开始学习python一周前,我坚持这个练习。我必须阅读一份员工的csv文件,并有工资并返回一个列表,其中包含在选项卡中分割的行。该列表如下所示:

employees = [['ID','Title','Salary','Base'],
             ['453334','Professor','0.56','.40'],
             ['4353434','Tutor','0.66','0065'.....]]

我必须过滤清单,只保留那些教授的员工。我知道我需要打印那些第4列值=="教授"的项目。这就是我到目前为止所拥有的:

employees2 = []
def professor(x):
    for line in x:
       if x[?][4] == "Professor":
          employee2.append(line)
    return employee2

我只是不知道如何让它看到每一行,只有第4列输出一个列表只保留那些带有标题或教授的列。

1 个答案:

答案 0 :(得分:1)

也许:

def professor(x):
    employees2 = []
    for line in x:
       if line[1] == "Professor":
          employees2.append(line)
    return employees2

更短(更pythonic的方式)是:

employees2 = [line for line in employees if line[1] == "Professor"]

如果你必须做一个功能:

def professor(x):
    return [line for line in x if line[1] == "Professor"]

或者(有人可能会对此大喊大叫):

professor = lambda x: [line for line in x if line[1] == "Professor"]