迭代字典并打印tsv文件中的匹配行

时间:2013-08-22 12:55:53

标签: python dictionary tsv

我有一个像标题这样的tsv文件。

Header1 header2 header3 header4 header5
Aa      bb      dd      cc      aa      
Bb      bb      aa      cc      bb    
Cc      bb      cc      dd      aa    
Aa      bb      ee      cc      dd    
Aa      vv      ff      gg      ii

我有一个像{‘0’: ‘aa’, ‘1’:’bb’,’3’:’cc’}

这样的词典

我应该解析这个文件,并从文件返回索引0的每一列是aa,索引1是bb而索引3是cc的行。换句话说,我需要得到第一列为aa,第二列为bb,第四列为cc的所有行。 所以我应该能够从tsv文件打印第一行和第四行,这些行是

Aa  bb  dd  cc  aa
Aa  bb  ee  cc  dd

我的代码片段没有给出所有这些条件的交集,但给出了每个条件满足的所有行。请帮我纠正我的脚本。上面指定的字典被命名为索引字典。

data=csv.reader(open(tsvfile,'rb'),delimiter = "\t")
            fields =data.next()
            print "-------------------------Rows Filtered-------------------------"
            for key,value in indexdict.items():

              for row in data:

                            if row[key]== value:
                                    linecount=linecount+1
                                    print row`                  

1 个答案:

答案 0 :(得分:2)

The all builtin function就是您所需要的:

for row in data:
    if all(row[key] == value for key, value in indexdict.items()):
        print row