Check是一个元组,值在python的列表中

时间:2015-07-06 22:25:32

标签: python

假设我在python中有一个元组列表(名称,年龄)。

我想检查一下该列表中是否有一个元组" Mary"作为名字,我不在乎年龄。

我该如何有效地做到这一点?

4 个答案:

答案 0 :(得分:3)

any(a == 'Mary' for a, b in tuples) # check if any tuple has a name equal to Mary

答案 1 :(得分:3)

如果您要进行多次查找,请创建一组名称:

st = {name for name,_ in lst}

然后只需检查if name in st:...

设置查找是0(1)使用任何for循环将是线性的,如果你总是保持一组名称更新,如果添加一个新的元组,那么它将更有效。

如果您实际上计划使用其中包含名称的元组,那么您将不得不遍历元组列表并检查每个名称。

答案 2 :(得分:2)

如果你必须有一个清单,那么你将会被O(n)困住(假设清单未分类):

my_tuple = ("Mary", 30)
my_list = [("Amber", 15), ("Mary", 25)]

def find_tuple(tuple_, list_):
    for val in list_:
        if val[0] == tuple_[0]:
            return val
    return None

否则,如果您的数据结构灵活,请使用字典:

my_tuple = ("Mary", 30)
my_dict = {"Amber": ("Amber", 15), "Mary": ("Mary", 25)}

def find_tuple(tuple_, dict_):
    return dict_.get(tuple_[0], None)

答案 3 :(得分:0)

另一种可能性是列出名称并使用in运算符:

names = [name for name, _ in tuples]
answer = "mary" in names