Hi Hi

'파이썬 복잡한 데이터'에 해당되는 글 1건

  1. 파이썬(python) - 함수에서 구조화된 데이터 반환 (1)

파이썬(python) - 함수에서 구조화된 데이터 반환

 

아래 코드에서 사용할 surfing_data.csv 파일



데이터가 더 복잡해지면 ?

함수에서 구조화된 데이터를 반환


함수에서 데이터를 넘겨주기 위한 방법은 두가지 있다.
  • 스트링으로
  • 해시로

스트링으로 반환하면 호출한 코드가 데이터를 더 처리해서 필요한 정보를 추출해야 한다. 할 수는 있겠지만 호출하는 코드가 split() 메소드를 사용해서 스트링을 분할해야하므로 복잡해진다. 이런 것은 함수 안에 처리하는 것이 좋다. 이렇게 하면 함수 안에서 처리하는 복잡한 과정을 호출하는 코드에서 숨길 수 있기 때문이다. 데이터를 해시로 반환하면 호출하는 코드는 더 이상 처리할 필요 없이 필요한 데이터만 바로 골라 쓸수 있게 된다.


def find_details(id2find):
    surfers_f = open("c:\\surfing_data.csv")  //데이터를 읽기 위해서는 파일을 열어야 한다.
    for each_line in surfers_f:  //for루프를 사용하여 파일의 각 라인을 반복한다.
        s= {}  // 빈해시로 시작해야 한다.
        (s['id'], s['name'],s['country'],s['average'],s['board'],s['age']) =each_line.split(";")  //split()메소드를 사용하여 데이터를 분활하고,
                                                                                                                                                    다중 할당으로 각 해시에 대이터를 저장한다.

        if id2find == int(s['id']):  // 인자로 받은 ID와 파일에서 읽은 ID가 같으지 비교한다.
            surfers_f.close() 
            return(s)  //인자가 동일하다. 그로므로 파일을 닫고 현재의 해시를 반환한다.
        surfers_f.close
        return({})  파일 끝까지 검색했지만 해당 ID를 찾지 못했다. 파일을 닫고 빈 해시를 반환한다.
lookup_id = int(input("Enter the id of the surfer: "))  //사용자에게 ID를 물어본다.
surfer = find_details(lookup_id)  // 입력받은 ID로 find_details()를 호출한다.
if surfer:
    print("ID:         " + surfer['id'])
    print("Name:       " + surfer['name'])
    print("Country:    " + surfer['country'])
    print("Average:    " + surfer['average'])
    print("Board type: " + surfer['board'])

    print("Age:        " + surfer['age'])