- У меня есть файл из 300 м строк (inputFile), все с двумя столбцами, разделенными вкладкой.
- У меня также есть список из 1000 уникальных элементов (vals).
Я хочу создать словарь с столбцом 1 как ключ и столбец 2 как значение для всех строк в inputFile, где первые столбцы встречаются в vals. Несколько элементов в vals не появляются в файле, эти значения должны быть сохранены в новом списке. Я могу использовать до 20 потоков, чтобы ускорить этот процесс.
Каков самый быстрый способ достичь этого?
Моя лучшая попытка до сих пор:
newDict = {}
foundVals = []
cmd = "grep \"" + vals[0]
for val in vals:
cmd = cmd + "\|^"+val+"[[:space:]]"
cmd = cmd + "\" " + self.inputFile
p = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
for line in iter(p.stdout.readline, ''):
info = line.split()
foundVals.append(info[0])
newDict.update({info[0]:info[1]})
p.wait()
notFound = [x for x in vals if x not in set(foundVals)]
Пример файл_ввод:
2 9913
3 9913
4 9646
...
594592886 32630
594592888 32630
594592890 32630
vals:
[1,2,594592888]
Словарь :
{2:9913,594592888:32630}
И в notFound:
[1]