python - 从 Python 中的元组列表中获取配对元素

标签 python list python-3.x tuples

假设我有一个这样的元组列表(没有重复的任何数字):

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/

相关文章:

python - 如何让 IntelliJ 识别常见的 Python 模块?

python - 如何在Eclipse pyDev中创建python发行包

python - 将 URL 路径拆分为组件

arrays - 在Python中分配字节列表

java - Android Java 检索 JSON 值并将其作为对象存储在列表中

Python RandomForest - 未知标签错误

python - 数组 Python 的复杂子集和合并

python - 如何将空格分隔的键字符串,唯一单词的值对转换为字典

python - 使用 "df.sample(frac=1)"后如何删除添加的列?

python - 调用 endInsertRows() 时 QTableView 模型崩溃