• 자료구조 : 문제 해결을 위해 많은 데이터를 효율적으로 저장하고, 처리하고, 관리할 수 있도록 자료들 사이의 관계를 표현한 것
  • 리스트
    • 리스트 각 요소 데이터 타입이 다를 수 있도록 허용!(유연한 자료구조) vs numpy
    • 다차원 리스트 (중첩 리스트) : 복잡한 자료 구조도 쉽게 표현할 수 있음
      • 리스트안의 리스트가 존재함(ex 어떤 학생의 학번, 학과, 이름 등의 정보를 담을 때 사용)
      • list = [231, 3, [93,123]] ⇒ list[2][1]은? ⇒ 123
  • 사전(dictionary, 딕셔너리)
    • 키key와 값value의 쌍으로 구성됨
      • dictionary변수이름 = { key1:value1, key2:value2}
    • 리스트는 각 요소를 접근하기 위해서 인덱스를 사용 vs 사전에서는 key를 사용
      • 이에 따라 요소가 입력되는 순서는 상관없음!
    • 사전에서 요소를 추가할 때는 dictionary변수명[key] = value 명령을 통해 추가함
      • 삭제 할때는 del dictionary변수명[key] 명령을 통해 삭제함
    • 사전의 value에 사전, 리스트 값이 들어갈 수 있음
    • key와 value에 의미를 담아서 저장할 수 있음(리스트는 인덱스로 접근하기 때문에 불가능)
  • 사전&반복문
    • for key in dict:
      • 사전변수를 in뒤에 두고, key를 통해서 반복문을 돎 ⇒ dict[key]를 통해 value도 갖고 올 수 있기 때문에 key, value 모두 갖고 올 수 있다.
  • 그 외의 사전을 활용하는 팁
    • 이미 존재하는 key에 대해서 다른 value를 저장하면 덮어써짐
    • 존재하지 않는 key로 접근하면 에러가 발생하므로, 미리 확인이 필요함
      • 존재하는지 확인하려면 if temp in dict: 이런식으로 확인할 수 있음
  • 사전을 리스트로 변환하기
    • dict.keys() ⇒ key에 대한 정보를 얻어올 수 있음
    • dict.values() ⇒ value에 대한 정보를 얻어올 수 있음
    • dict.items() ⇒ 모든 정보를 튜플 형태로 얻어올 수 있음
    • temp = dict.keys() ⇒ temp의 자료형은 dict_keys라는 새로운 자료형이므로 list화시켜줌
      • temp2 = list(temp) ⇒ temp2를 프린트해보면 리스트형태의 key에 대한 정보가 나열
    • 왜 변환하는 것인가? 사전에서는 정렬할 수 없기 때문
  • 자료 구조 리뷰
    • 데이터를 효율적으로 저장하고 꺼내쓰는 방법론
    • 사용하는 자료구조에 따라 구현과정/성능에 큰 영향을 준다 ⇒ 상황에 맞춰서 잘 쓰자!
    • 데이터의 빈도수를 카운트하는 것은 의미가 중요하다!
      • 정보를 얻을 때마다 이미 출현한 적 있다면 정보를 갱신(+1증가), 없다면 추가해주면 됌