gpt4 book ai didi

python - 循环遍历大表的两个字段

转载 作者:行者123 更新时间:2023-12-01 05:11:05 25 4
gpt4 key购买 nike

我有一个元组数组形式的表。它有 500,000 行,每行有 25 个字段。假设字段一和字段二是坐标的 x 和 y,对于每个 (x,y),我想用该 (x,y) 循环所有行。

我想不出一种有效的方法来做到这一点。

还有一点是,虽然行数很多,但是唯一的 x 的数量在 50 左右。

all_x= set([table[i][0] for i in range(len(table))])  #len(all_x) is around 50

无论如何,我什至想不出一种方法可以在不多次循环整个表的情况下循环具有相同 (x,y) 的行。

简化的示例数据

7 行,每行 3 个字段。[(0,0,5),(0,0,10),(1,5,3),(1,3,4),(1,5,10),(2,4,30),( 1,5,30)]

我希望能够将其分为 [(0,0, 5), (0,0, 10)] 和 [(1,5, 3),(1,5, 10),(1, 5, 30)] 和 [(1,3 ,4)] 和 [(2,4, 30)]

最佳答案

from itertools import groupby
l = [(0,0, 5), (0,0, 10), (1,5, 3), (1,3 ,4) ,(1,5, 10), (2,4, 30), (1,5, 30)]
a = sorted(l, key=lambda x: x[0:2])
[list(group) for key, group in groupby(a, lambda x: x[0:2])]

输出

[[(0, 0, 5), (0, 0, 10)],
[(1, 3, 4)],
[(1, 5, 3), (1, 5, 10), (1, 5, 30)],
[(2, 4, 30)]]

关于python - 循环遍历大表的两个字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24214731/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com