web-dev-qa-db-ja.com

タプルのリストで要素を見つける

リスト「a」があります

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

特定の番号のすべてのタプルを見つける必要があります。 1のために言う

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

それ、どうやったら出来るの?

121
Bruce

最初の番号を一致させたい場合は、次のようにできます。

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

1を含むタプルを検索する場合:

[item for item in a if 1 in item]
198
Nadia Alramli

実際には、これを行う巧妙な方法があります。これは、各タプルのサイズが2であるタプルのリストに役立ちます。リストを単一の辞書に変換できます。

例えば、

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

リスト内包表記

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

generator functions およびyieldステートメントも参照してください。

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

result= list( filter_value( a, 1 ) )
18
S.Lott
[tup for tup in a if tup[0] == 1]
8
Tendayi Mawushe
for item in a:
   if 1 in item:
       print item
5
ghostdog74
>>> [i for i in a if 1 in i]

[(1、2)、(1、4)]

1
suyash

フィルター機能の使用:

>>> def get_values(iterables、key_to_find):
return list(filter(lambda x:key_to_find in x、iterables)) >>> a = [(1,2)、(1,4)、(3 、5)、(5,7)] >>> get_values(a、1) >>> [(1、2)、( 1、4)]
1
pradam

filter関数も興味深い解決策を提供できます。

result = list(filter(lambda x: x.count(1) > 0, a))

1の出現をリスト内のタプルで検索します。検索が最初の要素に限定されている場合、ソリューションは次のように変更できます。

result = list(filter(lambda x: x[0] == 1, a))
0
MxNx

またはtakewhile(これに加えて、より多くの値の例を示します):

>>> a= [(1,2),(1,4),(3,5),(5,7),(0,2)]
>>> import itertools
>>> list(itertools.takewhile(lambda x: x[0]==1,a))
[(1, 2), (1, 4)]
>>> 

ソートされていない場合:

>>> a= [(1,2),(3,5),(1,4),(5,7)]
>>> import itertools
>>> list(itertools.takewhile(lambda x: x[0]==1,sorted(a,key=lambda x: x[0]==1)))
[(1, 2), (1, 4)]
>>> 
0
U9-Forward

tupleにある任意の番号をTupleで検索する場合は、次を使用できます。

a= [(1,2),(1,4),(3,5),(5,7)]
i=1
result=[]
for j in a:
    if i in j:
        result.append(j)

print(result)

特定のインデックスの数値を検索する場合は、if i==j[0] or i==j[index]を使用することもできます

0
sunil nagori