파이썬 기초 - 데이터 구조(Date Structures)_딕셔너리(dictionary)

LSH·2023년 5월 17일
0

교육 정보

  • 교육 명: 경기미래기술학교 AI 교육
  • 교육 기간: 2023.05.08 ~ 2023.10.31
  • 오늘의 커리큘럼: 빅데이터 기초 활용 역량 강화 (5/10~6/9) - 파이썬 프로그래밍
  • 강사: 조미정 강사님 (빅데이터, 머신러닝, 인공지능)
  • 강의 계획:
    1. 파이썬 언어 기초 프로그래밍
    2. 크롤링 - 데이터 분석을 위한 데이터 수집(파이썬으로 진행)
    3. 탐색적 데이터 분석, 분석 실습
    - 분석은 파이썬만으로는 할 수 없으므로 분석 라이브러리/시각화 라이브러리를 통해 분석
    4. 통계기반 데이터 분석
    5. 미니프로젝트

1. 딕셔너리 (dictionary)

1.1 딕셔너리의 개념

  • {key:value} 형태의 자료구조
  • key 값을 통해 value값 조회 가능

1.2 crud

C (Create)

  • 생성
    - new_dict = {key:value}
  • key, value로 사용가능한 자료형
    - 딕셔너리의 value에는 아무 자료형이나 들어갈 수 있으나 key에는 변경 불가능(immutable)한 값만 들어갈 수 있다.
    - 가능한 key 값
my_dict2 = {
    4: 'four',
    1.5: 'one point five',
    'string_key': 'string_value',
    True: 'True',
    (1,4): 'tuple',
    # [1, 2, 3]: 'a list', # 리스트는 key로 사용 불가 
    # {10: 'ten'}: 'a dictionary' # dict은 key로 사용 불가 
}

※ 참고 변경가능(mutable)/변경 불가능(immutable)

#int
a = 1
print(id(a))
print(type(a))
a = 2
print(id(a))
# 값만 바뀌었으니까 주소가 그대로일것 같지만 이렇게 주소가 바뀜 -> immutable
# a위치에 2가 들어가는게 아니라 2를 객체로 메모리에 넣고 a는 그 값을 레퍼런스 하는것!!!
b=2
print(id(b))
#list
a=[1,2,3]
print(a)
print(id(a))
a[2]=4
print(a)
print(id(a)) #요소가 바뀌었음에도 메모리 주소가 그대로인걸 확인 할 수 있음 -> mutable
  • 가능한 value 값
my_dict1 = {
    'key_1': 'first_value', 
    'key_2': 2,
    'key_3': 3.14,
    'key_4': True,
    'key_5': [4, 2, 1],
    'key_6': {'inner_key': 6} # 다중 딕셔너리
}

R (Read)

dict[key]: key에 해당하는 value 리턴

dict.keys(): 딕셔너리의 모든 key 값을 리턴
dict.value(): 딕셔너리의 모든 vlaue 값을 리턴
-.key(), .value를 쓴다고 해당 값을 리스트로 만들어서 메모리에 올리는 것은 아님 (리턴만 함)

특정 key를 가지는지 확인

  • 찾는값 in dict : 찾는 key가 dict에 있는지 boolean 값으로 리턴
  • dict.get(찾는값) : 찾는 key에 해당하는 value를 리턴, 없는경우 None을 리턴

길이 구하기

  • len(dict)

다중 딕셔너리

game = {
"game1": {
    "title":"hello",
    "genre":"FPS",
    "year":1234
},
"game2" : {
    "title":"hello2",
    "genre":"FPS2",
    "year":12342
},
}
#game1의 자료형
print(type(game["game1"]))
#game2의 genre에 접근
print(game["game2"]["genre"])
#
# 결과
<class 'dict'>
FPS2

U (Update)

  • 항목 추가
    - dict[new_key] = new_value (기존 항목이 있으면 해당 key의 value 값 변경)
    - dict[key] = new_value

D (Delete)

  • 항목 제거
    - del dict[key]
    - dict.pop(key)를 사용하면 원본 dict에서 key에 해당하는 value를 제거하고 제거한 값을 리턴함
profile
:D

0개의 댓글