2012-10-20 3 views
1

많은 다른 사람들과 list_a를 비교해야합니다. 내 문제는 다른 목록에 중복 된 항목이있을 때 시작됩니다 (other_b에 2 개의 k가 있음).하나의 목록에서 중복 된 두 목록을 비교하는 방법은 무엇입니까?

내 목표는 동일한 항목 (최대 3 개의 일치하는 항목)이있는 모든 목록을 필터링하는 것입니다.

list_a = ['j','k','a','7'] 
other_b = ['k', 'j', 'k', 'q'] 
other_c = ['k','k','9','k'] 

>>>filter(lambda x: not x in list_a,other_b) 
['q'] 

'k'가 list_a에 한 번만 표시되기 때문에 [ 'k', 'q']을 (를) 반환하는 방법이 필요합니다.

list_a와 other_c를 set()과 비교하는 것은 하나의 요소 만 반환하기 때문에 내 용도로 적합하지 않습니다. k. 필요한 경우 [ 'k', '9', 'k']

내가 충분히 명확했으면 좋겠다.

def my_comp(my_list, other_list): 
    other_cop = other_list[:] 
    for x in my_list: 
     try: 
      other_cop.remove(x) 
     except ValueError: 
      pass 
    return other_cop 

그것은 other_list을 copys와의 모든 elemnt을 제거합니다

+1

나는이 비교가 무엇인지 완전히 모르겠습니다. 좀 더 설명해 주시겠습니까? – Blender

답변

1

다음 함수는 두 번째로 첫 번째 인수로 list_aother_b를 제공 할 때, 원하는 새로운 목록을 반환 감사 사본에서 my_list. 제거 할 요소가 other_list이 아닌 경우 removeValueError을 발생시키고이 예외에 대해서는 아무 것도 수행하지 않습니다.

+0

대단히 감사합니다. 매우 도움이되었습니다. , 나는 새로운 것을 배워야 해. :) – eladc

관련 문제