python - 对于共享相同标识符值的行重复 for 循环代码

标签 python csv

我有一个由以下行组成的文本文件:

12,538123,724026,8.01  
12,538123,724026,8.5  
12,538123,724026,8.91  
34,538123,724026,8.01  
34,538123,724026,8.5  
34,538123,724026,8.91  

我有一个脚本,它可以循环遍历数据,从每行中获取一个元素 [-1] 并将其累积到一个新列表中。

我不知道如何对共享相同标识符的多组行(即第 1 行和第 2 行中的 12 行)执行此操作。

我尝试了一个嵌套的 while 循环,但我的问题是我的 while 条件是标识符值本身(即 12),所以当我读入具有不同 id 的新行(例如 34)时,这会更改条件while 循环到新的 id 值。这(毫不奇怪)导致我在一个长列表中累积了每个 [-1] 值的列表(我的实际列表有 >200,000 行)。我也在 For 循环中尝试了 If 语句,效果相同。

我的问题是使用 id 作为条件,但我想不出其他方法来做到这一点。

有人有什么想法吗?
可以循环完成吗?
如果我能总结一下线集,也可能做到这一点(但我不知道这是否可以做到)。

最佳答案

未经测试:

from itertools import groupby
from operator import itemgetter


d = {}
with open("some_file_name", "r") as f:
    lines = (line.split(",") for line in f)
    for k, g in groupby(lines, key=itemgetter(0)):
        d[k] = [line[-1] for line in g]

根据需要添加float等。结果在 d 中。

关于python - 对于共享相同标识符值的行重复 for 循环代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9796457/

相关文章:

Python 修补现有类

python - 为什么 pytesseract 抛出 WinError 6?

php - CSV 数据库输入导致每列占一行

Java:如何设计一个需要其子级的多个属性来处理文件的类?

python - 以 sphinx.autodoc 格式解析函数文档字符串

python - 各种 Python CMS 及其状态是什么?

r - 如何读取 csv 但仅在前两个逗号分隔符处分开?

regex - 在 Awk 中使用正则表达式

python - Azure 事件中心如何获取最新消息

csv - 手电筒 : Save tensor to csv file