我有两个用冒号分隔的文件,内容如下
File1: param1:param2
File2: param2:param3
我想生成File3: param1:param3
,所以合并这两个输入文件,因为param2对它们来说是公共的。你知道吗
我写了两个for循环来实现这一点,但是我认为对于更大的文件来说效率不够。你知道吗
编辑:根据用户的请求,下面是我用for循环编写的代码,其中file1和file2包含本文描述中提到的行
#!/usr/bin/env python
# -*- coding: utf-8 -*-
delimiter=':'
file1='file1.txt'
file2='file2.txt'
with open(file1) as file1data:
f1data = dict(map(str, line.split(delimiter, 1)) for line in file1data if delimiter in line)
with open(file2) as file2data:
f2data = dict(map(str, line.split(delimiter, 1)) for line in file2data if delimiter in line)
# print('f1data: {}'.format(f1data))
# print('f2data: {}'.format(f2data))
for a in f1data:
# print('f1data[a]: {}'.format(f1data[a]))
# print('a: {}'.format(a))
if f1data[a] in f2data:
# print('f2data[f1data[a]]: {}'.format(f2data[f1data[a]]))
print('{}{}{}'.format(a, delimiter, f2data[f1data[a]]))
file1data.close()
file2data.close()
让我们考虑一下这个问题没有单一的解决办法。你知道吗
建议使用hashmaps(
dict
在python中)实现。你知道吗为了提高内存效率,在内存中保留较少的键,可以构建一个dict映射最短的文件。你知道吗
举个例子,假设File1比较短。你知道吗
现在,您有了一个
file_1_map
映射param2 -> param1
。你知道吗接下来,迭代第二个文件,对于每一行,查找第二个文件的给定
param2
对应的param1
。你知道吗相关问题 更多 >
编程相关推荐