Python 找到相似的数据并将其放在单独的列表中

Python 找到相似的数据并将其放在单独的列表中,python,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.90

我在一个数组中有一组数据点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的点,并将它们放在单独的列表中。我用各种方法搜索了几个小时,但运气不好


更新:抱歉,我不清楚,我可以使用排序功能对它们进行分组,但无法确定如何将它们放入单独的列表中。

这似乎是您想要的。

这似乎是您想要的。

首先,您需要按Y轴对它们进行排序:

sl = sorted(data, key=lambda l:l[1])
然后,您可以使用itertools.groupby:

要打印:

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

首先,您需要按Y轴对它们进行排序:

sl = sorted(data, key=lambda l:l[1])
然后,您可以使用itertools.groupby:

要打印:

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

在将其传递给groupby之前,需要对L进行排序,似乎索引是1..?在将其传递给groupby之前,需要对L进行排序,似乎索引是1。。?