【发布时间】:2015-09-26 22:21:22
【问题描述】:
我在一个文件中有几个字典列表如下
[1,{'a':1,'b':8,'c':15}]
[2,{'j':2,'k':10,'a':15}]
........................
........................
我有一个主字典,其中包含上述字典列表的所有键,格式如下 {0:'c', 1:'b', 2:'j', 3:'a', 4:'k'}
对于我想按如下方式处理字典的每一行 [1,{3:1,1:8,0:15}] [2,{2:2,4:10,3:15}]
这里的值与输入行的值相同。键将是主字典中与该值对应的键。
for list1elem in listofemail[1:]:
d = {k: list1elem[v] for k,v in vocab_dic.items() if v in list1elem}
print(d)
但我的文件包含大约 25000 行,主词典包含 25000 个单词,这花了很多时间。我还从 8 个目录中读取了这样的文件。所以我还有两个 for 循环
for dirpath, dirs, files in os.walk('email'):
files = [fi for fi in files if not fi.startswith("kjjii")]
for filename in fnmatch.filter(files, '*.txt'):
with open(os.path.join(dirpath, filename)) as f:
lines = f.read().splitlines()
for list1elem in listofemail[1:]:
d = {k: list1elem[v] for k,v in vocab_dic.items() if v in list1elem}
print(d)
它运行了 15 分钟。需要帮助来优化它。
【问题讨论】:
-
在这样令人困惑的帖子上你不会得到任何帮助,请尝试具体说明你想要实现的目标,通过发布一个示例而不是你脑海中的大图,你尝试了什么到目前为止,最后你可以发布大图问题,否则很难理解