【发布时间】:2019-02-26 22:08:33
【问题描述】:
我被一些python代码困住了,想知道是否有人能指出我正确的方向。我有两个结构如下的文本文件:
文件1
48.1.a 48.1
48.1.b 48.1
48.1.c 48.1
49.1.a 49.1
50.1.a 50.1
50.1.b 50.1
50.1.c 50.1
文件2
48.1 info1 info2 info3
49.1 info1 info2 info3
50.1 info1 info2 info3
请注意,我在 file1 第 2 列中有重复条目,这些条目与 file2 第 1 列中的唯一条目相对应。对于 file1 中的每一行,我想打印 file2 中与第二列中的值相对应的行文件 1,这样:
48.1 info1 info2 info3
48.1 info1 info2 info3
48.1 info1 info2 info3
49.1 info1 info2 info3
50.1 info1 info2 info3
50.1 info1 info2 info3
我尝试了以下代码,其中包括使用列表来保留 file1 中的重复值:
list=[]
with open("file1.txt") as file1:
for i in file1:
list.append(i.strip().split()[1])
with open("file2.txt") as file2:
for j in list:
for k in file2:
item = k.strip().split()[0]
if item==j:
print(k.strip(), file=output)
这段代码没有给我想要的输出,我认为是因为我嵌套了 for 循环(这也可能是不好的编码习惯?)以及我如何迭代列表中的项目和 file2 中的行。感谢您的帮助!
【问题讨论】:
-
将文件 2 转换为 dict,其中第一列作为键,其他列作为列表,例如使用
defaultdict(list)。然后,您可以遍历文件 1 并打印出第二列以及 dict 中与该第二列匹配的条目。
标签: python