我有一个列表列表,每个列表都有几个词典。第一个列表表示三角测量中涉及的每个坐标。第二个列表表示与该网格坐标关联的字典列表。列表中的每个字典代表距离我们正在尝试三角测量的线点(我们的目标)的某个曼哈顿距离的每个可能坐标。每个三角测量列表中存在的任何坐标表示来自这些位置的重叠点,从而表示我们目标的潜在位置。
无论如何,我提供了一些背景,希望能增加一些理解。我知道它可能会引起混淆,但我会包含我的数据结构,以帮助可视化正在发生的事情。我已经尝试过循环这些并且还没有找到一种方法来有效地做到这一点。
有没有人知道一些Python魔法来生成每组坐标中存在的坐标列表?
因此,在下面的示例中,我们从3个不同的坐标组开始。我需要生成所有3组坐标中存在的任何x,y对的列表。
示例:
[
[
{'x': 1, 'y': 0},
{'x': -1, 'y': 0},
{'x': 0, 'y': 1},
{'x': 0, 'y': -1}
],
[
{'x': 2, 'y': 0},
{'x': -2, 'y': 0},
{'x': 0, 'y': 2},
{'x': 0, 'y': -2},
{'x': 1, 'y': 1},
{'x': -1, 'y': -1},
{'x': -1, 'y': 1},
{'x': 1, 'y': -1}
],
[
{'x': 3, 'y': 0},
{'x': -3, 'y': 0},
{'x': 0, 'y': 3},
{'x': 0, 'y': -3},
{'x': 2, 'y': 1},
{'x': -2, 'y': -1},
{'x': -1, 'y': 2},
{'x': 1, 'y': -2},
{'x': 1, 'y': 2},
{'x': -1, 'y': -2},
{'x': -2, 'y': 1},
{'x': 2, 'y': -1}
]
]
答案 0 :(得分:2)
没有魔力。您只需要对数据结构更加小心。您将坐标放在不可清洗的字典中。所以你不能把它们添加到一个集合中。你需要使用元组。因此,您的数据结构应如下所示:
my_list = [
set([
(1, 0),
(-1, 0),
(0, 1),
(0, -1)
]),
set([
(1, 0),
(-2, 0),
(0, 2),
(0, -2),
(1, 1),
(-1, -1),
(-1, 1),
(1, -1)
]),
set([
(1, 0),
(-3, 0),
(0, 3),
(0, -3),
(2, 1),
(-2, -1),
(-1, 2),
(1, -2),
(1, 2),
(-1, -2),
(-2, 1),
(2, -1)
])
]
common = my_list[0]
for s2 in my_list[1:]:
common = common & s2
print common