2016-07-21 3 views
0

나는 여기서 새로운 지식이있다. 관련 질문을 찾으려고 노력했습니다.목록의 특정 요소를 사용하여 다른 목록의 요소를 비교하고 파이썬에서 중복이 발견되면 특정 요소를 출력하는 방법은 무엇입니까?

기본적으로, 일부 목록은 다음과 같습니다있어 :

[0, 'a', 1, 3, 3.3, 220, 22.27] 
[0, 'b', 1, 13, 3.3, 220, 23.19] 
[0, 'c', 1, 23, 3.3, 220, 24.11] 
[1, 'a', 1, 3, 3.5, 200, 20.02] 
[1, 'b', 1, 43, 3.3, 220, 25.94] 
[2, 'a', 1, 3, 3.3, 250, 26.86] 

내가 지표 비교 키와 1, 23의 목록 항목을 사용하여 지정된 키에 사용할 수있는 모든 목록 내에서 검색하고 싶습니다. 발견하는 경우

, 나는 그것은 출력 인덱스 0, 4, 5-1의 목록 항목들로 구성 될 필요가있다.

따라서 주어진 목록에서 원하는 절차가 아래에 나와 있습니다.

1 라운드 :

  • 비교 키 'a', 1,
  • 3
  • [0, '는

    에 동일한 키를 발견 가능한 목록을 통해 이동 ', 1, 3, 3.3, 220, 22.27]

    [1 'A', 1, 3, 3.5 200 20.02]

    [2 'A', 1, 3, 3.3 250 26.86]

  • 5,

  • 는 출력

    0 3.3 220 22.27

    1 3.5 200 20.02 생성

    ,536,913 63,210

    2, 3.3, 250, 26.86

나는 아무 생각이 어떻게 아직 코딩하지 않으려면, 그래서 그 누구도 날 도와 줘요 수 있을까? 사전에

감사

+1

지금까지 시도한 것은 무엇입니까? 지금까지 얻은 코드를 제공해주십시오. 3 명으로 구성된 그룹을 찾고 있습니까? – albert

+0

나는 개념적으로 조금씩이 문제를 해소하고 각 부분을 섹션으로 구성하려고 노력할 것이다. 1. 목록을 검색하여 하위 집합이 포함되어 있는지 확인하려는 경우 2. 목록에 포함되어있는 하위 집합을 제거하려는 경우 3.이 필터를 여러 목록에 걸쳐 실행하려는 경우 4. 목록 집합의 출력을 인쇄하려고합니다. 부품을 개별적으로 해결 한 다음 개별 부품을 결합하여 전체 솔루션을 형성하십시오. – Selecsosi

답변

0

@wagaman :

universe = [] 
universe.append([0, 'a', 1, 3, 3.3, 220, 22.27]) 
universe.append([0, 'b', 1, 13, 3.3, 220, 23.19]) 
universe.append([0, 'c', 1, 23, 3.3, 220, 24.11]) 
universe.append([1, 'a', 1, 3, 3.5, 200, 20.02]) 
universe.append([1, 'b', 1, 43, 3.3, 220, 25.94]) 
universe.append([2, 'a', 1, 3, 3.3, 250, 26.86]) 


def extract_from_lists(universe, keys=[1,2,3], matches=['a',1,3]): 
    if len(keys) == len(matches): 
     for l in universe: 
      valid = True 
      for i in range(len(keys)): 
       if l[keys[i]] != matches[i]: 
        valid = False 
        break 
      if valid: 
       print("{},{},{},{}".format(l[0],l[4],l[5],l[-1])) 
    else: 
     print('Keys List and Matches List length must be equal.') 


extract_from_lists(universe) 

당신이 그것에 대한 자세한 정보가 필요하면 알려주세요, 그것은 매우 간단한 비교입니다 : 안녕하세요 래는 여기에 약간의 조각은이 작업을 수행하는 인수, 반복 등의 기본값으로 파이썬의 기본 개념을 사용합니다.

0

것은 우리가 먼저 입력 데이터를 정의 할 수 있습니다 :

some_lists = [[0, 'a', 1, 3, 3.3, 220, 22.27], 
       [0, 'b', 1, 13, 3.3, 220, 23.19], 
       [0, 'c', 1, 23, 3.3, 220, 24.11], 
       [1, 'a', 1, 3, 3.5, 200, 20.02], 
       [1, 'b', 1, 43, 3.3, 220, 25.94], 
       [2, 'a', 1, 3, 3.3, 250, 26.86]] 

우리는 some_lists의 하위 목록을 반복해야합니다. 이를 위해 인덱스 변수 인 x을 사용할 것입니다. 각 하위 목록 x에 대해 x[1] == 'a' and x[2] == 1 and x[3] == 3이 충족되는지 여부를 확인해야합니다. 이 논리 표현식은 slice notation에서 x[1:4] == ['a', 1, 3]으로 간소화 할 수 있습니다. 조건과 일치하는 x의 경우 지정된 항목 즉 [x[0], x[4], x[5], x[-1]]을 선택하여 원하는 출력을 만듭니다. 이 모든 논리는 한 줄의 코드로 list comprehension을 통해 쉽게 구현할 수 있습니다.

In [253]: [[x[0], x[4], x[5], x[-1]] for x in some_lists if x[1:4] == ['a', 1, 3]]    
Out[253]: [[0, 3.3, 220, 22.27], [1, 3.5, 200, 20.02], [2, 3.3, 250, 26.86]] 
관련 문제