# 프로그램 목적: 딕셔너리에 대한 기본실습
# 주의) 리스트:[] vs 딕셔너리/셋:{} vs 튜플:()

# 1) 딕셔너리에 값을 넣는 방법 1
tel1 = dict()  # 공백 딕셔너리 생성시에는 {}보다 dict()를 쓰는 것이 좋음
tel1['홍길동'] = '010-1234-5678'  # 딕셔너리명['키'] = '값'
tel1['강감찬'] = '010-1234-1234'
tel1['이순신'] = '010-1234-4321'
# tel1['홍길동'] = '010-0000-0000'  # 업데이트 시 이렇게 처리가능
print(type(tel1), tel1)  # {키: 값} -> 값에 리스트, 딕셔너리 등이 들어갈 수 있음

# 2) 딕셔너리에 값을 넣는 방법 2
tel2 = dict(홍길동='010-1234-5678', 강감찬='010-1234-1234', 이순신='010-1234-4321')
# tel2 = dict('홍길동'='010-1234-5678')  # 주의) dict()에서는 키에 홑따옴표가 붙지않음!
print(type(tel2), tel2)
# 주의) 1번 방법과 2번 방법 혼동하지 않도록 꼭 주의할 것!

# 3) 키에 대응되는 값을 뽑아오는 방법
print('홍길동 :', tel1['홍길동'])  # 해당 키에 대응된 값을 리턴
print('이순신 :', tel1['이순신'])

# 4) 모든 키를 뽑아오는 방법 1
for t in tel1:  # 이렇게 하면 '키'만 뽑아옴
    print(t, end=' ')
print('')

# 5) 모든 키를 뽑아오는 방법 2 -> keys()  ('s' 안 빼먹게 주의!)
print(tel1.keys(), type(tel1.keys()))  # 키들을 출력
# 응용) 키를 이용해 값을 뽑아오기
for t in tel1.keys():  # 모든 키들이 '키들의 딕셔너리(dict_keys)' 형성
    print(t, ':', tel1[t])

# 6) 모든 값을 뽑아오는 방법 -> values()  ('s' 안 빼먹게 주의!)
print(tel1.values(), type(tel1.values()))  # 값들을 출력
# 응용) 값을 이용해 키를 뽑아오기
for t in tel1.values():  # 모든 값들이 '값들의 딕셔너리(dict_values)' 형성
    print(t)

# 7) 딕셔너리와 튜플의 관계 -> items()
print(tel1.items())  # 모든 딕셔너리의 원소가 튜플형태로 저장 -> 이들이 'dict_items'를 형성
for t in tel1.items():  # t[0]는 이름, t[1]은 전화번호
    print(t, t[0], t[1])  # 튜플의 내용을 인덱스를 이용해서 뽑아올 수 있음
# 중요) 이렇게 값을 2개로 받아올 수 있음
for x, y in tel1.items():
    print(x, y)  # 튜플의 내용을 뽑아올 수 있음