2017-12-31 169 views
-5

에서 하위 목록을 확인 I 하위 목록을 포함하는 목록, 하위 목록을 각각 2 문자열이 들어있다 그렇지 않으면순회은/파이썬

sur mange 

내가 일 할 수있는 방법 print("No match with dic")

: 두 요소가 존재하는 경우는, DIC라는 이름의 사전에있는 경우 -lists if subL[1] in Dic and subL[2] in Dic: 내가 좋아하는 출력을해야합니다 파이썬은 무엇입니까?

이 내가하고 있었던 것입니다 :이 오류로

R3: You mean: ['sur', 'mange'] 

:

for sub_list in cor: 
    for i in range (0,len(sub_list)): 
     if sub_list[i] in my_list and sub_list[i+1] in my_list: 
      print ("R3: You mean:", sub_list) 

내가 다음 출력을 얻을

Traceback (most recent call last): 
    File "<pyshell#88>", line 3, in <module> 
    if sub_list[i] in my_list and sub_list[i+1] in my_list: 
IndexError: list index out of range 

내가 뭔가 잘못하고있는 중이 야 생각!

+0

또한 파이썬 색인 생성은 0입니다. –

+0

"키", "값"또는 "키 - 값"쌍으로 dict에 있습니까? –

+0

아, 내가하고있는 것을 추가하는 것을 잊어 버렸습니다. 이것은 거친 생각입니다 !! 게시물을 편집하겠습니다. – Ran

답변

0

코드의 문제는 range 함수가 i의 값을 "0"에서 "len (sub_list) -1"로 반환한다는 것입니다. 그러나 귀하의 for 루프 내에서 sub_list의 "i + 1"번째 요소에 액세스하려고합니다. 따라서 "i"의 값이 len(sub_list) - 1 일 때 "i + 1"은 하위 목록 에 대해 유효한 색인이 아닌 "len (sub_list)"이됩니다 (목록의 유효한 색인은 항상 0 ~ len (list) - 1).

따라서 범위 함수의 endbound를 변경하면 코드가 정상적으로 작동합니다. 즉 다음을 사용해야합니다.

for i in range (0,len(sub_list)-1): 
#        ^subtracting one to make it fall in valid range