2013-07-17 3 views
4

사전을 매개 변수로 받아들이는 함수가 있습니다 (작동하는 다른 함수에서 반환 됨). 이 함수는 문자열을 입력으로 요구하고 사전의 각 요소를 살펴보고 거기에 있는지 확인합니다. 사전은 기본적으로 3 글자 약어입니다 : 국가 예 : AFG : 아프가니스탄 등등. 내 문자열로 'sta'를 넣으려면 초기화 된 빈 목록에 united STAtes, AfghaniSTAn, coSTA rica 등의 조각이있는 국가를 추가하고 그 목록을 반환해야합니다. 그렇지 않으면 [찾지 못함]을 반환합니다. 반환 된 목록은 [[ '코드', '국가'], [ '미국', '미국'], [ 'CRI', '코스타리카'], [ 'AFG', 'Afganistan']] 등 여기 내 코드는 지금까지의 모습입니다 :문자열 조각을 찾기 위해 사전을 반복해야합니다.

def findCode(countries): 
    some_strng = input("Give me a country to search for using a three letter acronym: ") 
    reference =['Code','Country'] 
    code_country= [reference] 
    for key in countries: 
     if some_strng in countries: 
      code_country.append([key,countries[key]]) 
    if not(some_strng in countries): 
     code_country.append(['NOT FOUND']) 
    print (code_country) 
    return code_country 

내 코드는 반환 유지

답변

5

코드는 [ '을 (를) 찾을 수 없습니다'] :

for key in countries: 
    if some_strng in countries: 
     code_country.append([key,countries[key]]) 

은 다음과 같아야합니다

for key,value in countries.iteritems(): 
    if some_strng in value: 
     code_country.append([key,countries[key]]) 

국가가 값이 아니라 키에 있다고 가정 할 때 문자열의 각 값을 검사해야합니다.

또한 최종 return 문 :`

if len(code_country) == 1 
    code_country.append(['NOT FOUND']) 
+4

당신이) ('countries.iteritems을 의미합니까 :

if not(some_strng in countries): code_country.append(['NOT FOUND']) 

는이를 확인하는 방법에는 여러 가지가 있으며,이 같은되어야 하는가? –

+0

확인을 위해 그것을 실행, 나는있을 수 있습니다 @ JonClements ** 편집 ** 예 내가 한 것 – Stephan

+0

그 대신에'if' 그냥'return code_country if code_country else [ 'NOT FOUND']' – Esenti

관련 문제