튜플 목록에서 요소 찾기


140

나는 목록 'a'

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

특정 숫자에 대한 모든 튜플을 찾아야합니다. 1이라고 말해라

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

어떻게합니까?

답변:


236

첫 번째 숫자 만 일치 시키려면 다음과 같이하십시오.

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

1이있는 튜플을 검색하는 경우 :

[item for item in a if 1 in item]

115

실제로 각 튜플의 크기가 2 인 튜플 목록에 유용한이 작업을 수행하는 영리한 방법이 있습니다. 목록을 단일 사전으로 변환 할 수 있습니다.

예를 들어

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

11
이것을 Bruce의 문제에 어떻게 적용합니까?
HelloGoodbye

5
좋은 답변 (이 질문에는 해당되지 않을 수도 있음). 값이 선택 튜플 목록에 있는지 확인하기 위해 잘 작동했습니다 (예 : 테스트에서 "hi"인 경우)
MagicLAMP

10
MagicLAMP가 제안한 것처럼 실제로 질문에 대답하지 않습니다. 특히 dict(X)X를 일반적인 첫 번째 요소의 마지막 튜플이 사용되는 값인 사전으로 변환합니다. OP의 예에서는 (1,2) 및 (1,4)와 반대로 (1,4)를 반환합니다.
BBischof 2016 년

23

리스트 이해 에 대해 읽어보기

[ (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 ) )

1
if x == 1해야if x == value
sambha




1

filter기능은 흥미로운 솔루션을 제공 할 수도 있습니다.

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

이 목록에서 튜플을 검색하여 1. 검색이 첫 번째 요소로 제한되면 솔루션을 다음과 같이 수정할 수 있습니다.

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

1

필터 기능 사용 :

>>> def get_values ​​(iterables, key_to_find) :
리턴리스트 (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

또는 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

튜플에있는 숫자를 튜플로 검색하려면 다음을 사용할 수 있습니다

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]특정 색인에서 숫자를 검색하려는 경우 에도 사용할 수 있습니다

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.