我正在使用 csv 写入器/读取器库。给定一个 csv 示例:
a,x,1
a,y,1
b,z,y
a,c,1
a,x,5
b,x,y
如何让 python 搜索并返回 row[0]、row[2] 的组合出现不止一次的地方?即它应该返回 a,x,1 + a,y,1 + a,c,1 作为一个匹配项,而 b,z,y + b,x,y 作为另一个匹配项。
我了解如何让 python 打开文本文件,然后让它将当前行与上一行进行比较,看它们是否匹配。然而,匹配显然可以在文件中的任何位置,我不确定该怎么做。
提前致谢
最佳答案
您可以使用 defaultdict
字典并使用 (first, last)
的元组作为键和行列表,其中第一个和最后一个元素是 (first , last)
作为值:
import csv
from collections import defaultdict
result = defaultdict(list)
with open("data.csv", "r") as f:
reader = csv.reader(f)
for d in reader:
result[(d[0], d[-1])].append(d)
print(result)
输出:
defaultdict(<class 'list'>,
{
('a', '1'): [['a', 'x', '1'], ['a', 'y', '1'], ['a', 'c', '1']],
('b', 'y'): [['b', 'z', 'y'], ['b', 'x', 'y']],
('a', '5'): [['a', 'x', '5']]
}
)
关于python - 搜索特定的行组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57905885/