查找类似的数据并将它们放在单独的列表中

时间:2012-10-27 03:23:02

标签: python

我在数组中有一堆数据点(x,y,z):

[58.9067649841309, 57.8828468322754, -50.0]
[63.3353118896484, 62.7399787902832, -50.0]
[73.3353118896484, 62.8352203369141, -50.0]
...
[75.9067916870117, 39.9781227111816, -15.0]
[77.5257720947266, 58.3114356994629, -15.0]
[58.9067649841309, 57.8828468322754, -15.0]

并且需要找到匹配y的点并将它们放在单独的列表中。我没有运气就用各种方法进行了几个小时的搜索。

更新:对不起,我不清楚,我可以使用sort函数对它们进行分组,但无法确定如何将它们放在单独的列表中。

2 个答案:

答案 0 :(得分:2)

答案 1 :(得分:2)

首先,你需要按Y轴排序:

sl = sorted(data, key=lambda l:l[1])

然后您可以使用itertools.groupby

from itertools import groupby

groupby(sl, key=lambda l:l[1])

要打印:

for i, g in groupby(sl, key=lambda l:l[1]):
    print str(i) + ":"
    for x, y, z in g:
        print x, y, z

39.9781227112:
75.906791687 39.9781227112 -15.0
57.8828468323:
58.9067649841 57.8828468323 -50.0
58.9067649841 57.8828468323 -15.0
58.3114356995:
77.5257720947 58.3114356995 -15.0
62.7399787903:
63.3353118896 62.7399787903 -50.0
62.8352203369:
73.3353118896 62.8352203369 -50.0