python - 搜索特定的行组合

标签 python csv

我正在使用 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/

相关文章:

python - 如何使用 Pandas 搜索和识别 csv 文件中的浮点值?

python - 用 Python 在 Google App Engine 中实现 Comet/Server 推送

Python 初始化结构体

python - 合并 django-tables2 和动态模型中的表

python - Pycharm docker-compose 解释器不加载库

python - Pandas Dataframe(来自 CSV)在整个数据中具有多个标题行

java - 如何转义 CSV 文件中的逗号?

java - 用 Java 读取、解析然后写入 CSV

python - xlsxwriter 格式化特定的单元格

mysql - MariaDB : convert string to int when importing from CSV, 同时删除数字中的空格