通过字典搜索Python将数据附加到列表

时间:2013-06-22 03:33:18

标签: python list sorting append

大家好,首先是我的代码:

import os

rootdir= 'C:\Documents and Settings\Guest\My Documents\SC\Actual work\Part2\New Folder'

for subdir, dirs, files in os.walk(rootdir):
  for file in files:
    f=open(file,'rU')
    lines = f.readlines()
    f.close()
    for line in lines:
        if "2002" in line:
            print line

这实现了我在目录中搜索所有文件并仅打印与2002匹配的行的结果。然后将它们输出到shell中的2002个值的长列表中。

我想知道的是有一种方法可以将每个数据与其文件相关联,以便稍后调用。即我可以在循环中的某处添加append / extend语句,以便将每个数据与其文件相关联。即我想要的输出是:

datafile("name") = [list of all 2002 matches] 
datafile("name2") = [list of all 2002 matches in file 2]

这样我以后可以调用这些列表。我想这样做,以便在代码中搜索并动态创建列表。我的新代码在下面,但是它没有将所有第一个文件数据分组到一个列表中,只是将每个匹配打印到一个列表中。

rootdir= 'C:\Documents and Settings\Guest\My Documents\SC\Actual work\Part2\New Folder'


for subdir, dirs, files in os.walk(rootdir):
 for file in files:
    f=open(file,'rU')
    lines = f.readlines()
    f.close()
    for line in lines:
        newlist=[]
        if "2011" in line:
            x= newlist.append(line)
            print newlist

1 个答案:

答案 0 :(得分:0)

看起来你想要使用字典。

datafile = {}

for subdir, dirs, files in os.walk(rootdir):
  for file in files:
   f=open(file,'rU')
   lines = f.readlines()
   f.close()
   newlist=[]
   for line in lines:           
       if "2011" in line:
           x= newlist.append(line)
           print newlist
   datafile[file] = newlist


print datafile  # this prints out every file name, and the corresponding list of matches (if any).

要获取所需数据,请执行以下操作:

print datafile["filename"]

要打印文件名,请使用循环:

for f in datafile:
    print f, datafile[f][:1]