簡體   English   中英

檢查是一個元組,值在python列表中

[英]Check is a tuple with a value is in a list in python

假設我有一個python中的元組列表(名稱,年齡)。

我想檢查列表中是否有以“ Mary”為名稱的元組,我不在乎年齡是多少。

我如何有效地做到這一點?

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

如果要進行許多查找,請設置一組名稱:

st = {name for name,_ in lst}

然后只要檢查if name in st :...

使用任何for循環的集合查找為0(1)將是線性的,如果您始終保持一組名稱更新(如果添加了一個新的元組),則效率將大大提高。

如果您實際計划使用帶有名稱的元組,那么您將不得不遍歷元組列表並檢查每個名稱。

如果必須有一個列表,那么您將陷入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)

另一種可能性是僅列出名稱並使用in運算符:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM