假设我有一个这样的元组列表(没有重复的任何数字):
lst = [(4, 1), (3, 8), (2, 9), (5, 6), (7, 0)]
我知道一个元素值a
,我想找到配对值b
。
但是,我不知道 a
是元组的第一个元素还是第二个元素。
有没有办法轻松干净地找到它?
我试过这个:
a = 8
pair = next(t for t in lst if t[0] == a or t[1] == a)
b = pair[0] if pair[1] == a else pair[1]
这看起来不太好……是否存在更智能的东西?
最佳答案
对于复杂度为 O(n) 的双向 map ,存在一个非常酷的技巧。首先,您必须展平您的列表:
l = [1, 4, 3, 8, 9, 2, 5, 6, 7, 0]
然后找到一个的关联元素真的很简单:
a = 8
b = l[l.index(a) ^ 1]
这是有效的,因为如果数字与 1 异或,则数字为偶数时加一,如果数字为奇数则减一。
关于python - 从 Python 中的元组列表中获取配对元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33971019/