我有一个由以下行组成的文本文件:
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/