# 딕셔너리 (연관배열)
# 배열을 사용할때 배열 = [1,2,3,4] 를 생각해보면
# 배열에서 2라는 값을 꺼내 사용하고 싶다면 배열[1] 이렇게 사용하는 것을 떠올린다
# 지금 이러한 예가 단편적이고 배열의 수가 한눈에 보여서 쉽게 원하는 값을 꺼내쓸 수 있는데 만약
배열 = [[1,2,3,[4,5]],[6,7,8,[9,10]],...]
# 이러한 구조의 배열이 엄청 많아진다면 어떻게 원하는 데이터를 편하게 들고올지 생각해보자
# 디비에서 데이터를 불러와보니 이러한 배열 구조라면 난감하다
# 0번 인덱스 데이터의 0번은 아이디를 1번은 닉네임을 2번은 이름을 3번 인덱스에는 유저의 사진들을 담았다고 상상해보자
배열 = [["id1", "우리동네여포", "홍길동", ["img1.jpg", "img2.jpg"]], ...]
# 단순하게 닉네임이 필요해서 가져온다고 가정하면
# 1. 배열 전체를 체크한다 (사람이 수동으로)
# 2. 해당데이터의 인덱스 번호를 세어본다
배열닉네임값 = 배열[0][1]
# 이러한 모습을 지니게된다 그렇다면 데이터를 불러올때마다 배열을 확인하고 거기에서 불러오는 데이터를 확인해서 몇번 인덱스가 우리가 원하는 데이터인지 외우고 있어야 한다. 이러한 불편함을 해소해주는게 딕셔너리다
# 딕셔너리 생성
딕셔너리 = { "아이디": "id1", "닉네임":"우리동네여포", "이름":"홍길동", "이미지":{"이미지1":"img1.jpg", "이미지2":"img2.jpg", "3차원": {"3차원이미지1":"img3.jpg","3차원이미지2":"img4.jpg"}} }
# 딕셔너리 값 출력 (두가지 방법중 전자는 키값이 없을때 오류가 발생하지만, 후자의 경우에는 none으로 돌려준다)
딕셔너리결과 = 딕셔너리["이미지"]["이미지1"]
# 딕셔너리결과 = 딕셔너리["이미지"]["3차원"]["3차원이미지1"]
딕셔너리결과2 = 딕셔너리.get("이미지").get("이미지1")
# 값이 없는 경우 디폴트 값도 지정이 가능하다
딕셔너리결과2 = 딕셔너리.get("이미지").get("없는키", "디폴트")
# 키들을 추출 해보자 (1차원 키값만 추출)
키값 = 딕셔너리.keys()
# n차원 키값은 이렇게
키값2 = 딕셔너리["이미지"].keys()
# 값들을 추출
값 = 딕셔너리.values()
# 키와 값 동시 추출
동시추출 = 딕셔너리.items()
# 해당키 확인 (1차원만 가능하다)
키확인 = "이미지" in 딕셔너리
# n차원은 이렇게
키확인 = "3차원" in 딕셔너리["이미지"]