gpt4 book ai didi

python - 根据某些标准查找列表的共同元素?

转载 作者:行者123 更新时间:2023-12-02 19:25:47 26 4
gpt4 key购买 nike

输入采用元组列表的形式,

left_corners = [((380, 456), 1), ((1129, 456), 2), ((354, 328), 3), ((1137, 325), 4)]
right_corners = [((784, 456), 1), ((1535, 456), 2), ((778, 328), 3)]

公共(public)元素是元组的第二个元素为 1, 2, 3 的元素,所以我希望最终的表示看起来像 -

[(((380, 456), 1),((784, 456), 1)), (((1129, 456), 2),((1535, 456), 2)), (((354, 328), 3), ((778, 328), 3))]

我想不出没有几个循环的解决方案(循环遍历两个元素并附加在公共(public)列表中具有相同第二个元素的元素)。有没有更Pythonic的方式?我也对 numpy 或其他东西中的其他表示形式持开放态度。

假设:我们可以假设两个列表都以列表的第二个元素为键进行排序,但是 left_cornersright_corners 可能比另一个拥有更多的元素

最佳答案

如果你使用字典,你可以做一些更有效的事情

group_lists = {}
for corner in (left_corners+right_corners):
group_lists[corner[1]] = group_lists.get(corner[1], [])
group_lists[corner[1]].append(corner)

output = [group_lists[k] for k in group_lists]

如果您希望输出是元组列表而不是列表列表,您只需将最后一行更改为

output = [tuple(group_lists[k]) for k in group_lists]

关于python - 根据某些标准查找列表的共同元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62417023/

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