在元组列表中查找元素

196 投票
10 回答
503585 浏览
提问于 2025-04-15 18:50

我有一个列表'a'

a= [(1,2),(1,4),(3,5),(5,7)]

我需要找到所有与某个特定数字相关的元组。比如说,如果是1的话,结果会是

result = [(1,2),(1,4)]

我该怎么做呢?

10 个回答

29

了解一下列表推导式

[ (x,y) for x, y in a if x  == 1 ]

还可以看看生成器函数yield语句。

def filter_value( someList, value ):
    for x, y in someList:
        if x == value :
            yield x,y

result= list( filter_value( a, 1 ) )
175

其实有一个聪明的方法可以做到这一点,适用于任何包含二元组(每个元组有两个元素)的列表:你可以把这个列表转换成一个字典。

比如说,

test = [("hi", 1), ("there", 2)]
test = dict(test)
print test["hi"] # prints 1
316

如果你只想让第一个数字匹配,可以这样做:

[item for item in a if item[0] == 1]

如果你只是想找里面有1的元组,可以这样:

[item for item in a if 1 in item]

撰写回答