본문 바로가기
두두 IT/파이썬

[PYTHON 3-2] 변하지 않는 Tuple & 키-값 쌍의 Dictionary

by DoDo's 2026. 4. 15.
반응형

📚 변하지 않는 튜플(Tuple) & 키-값 쌍의 딕셔너리(Dictionary)

도입부 리스트가 자유롭게 데이터를 넣고 빼는 가방이라면, 절대 내용물이 바뀌면 안 되는 금고 같은 자료구조도 필요하겠죠?

오늘은 읽기 전용 리스트인 **튜플(Tuple)**과, 라벨을 붙여 데이터를 보관하는 **딕셔너리(Dictionary)**를 알아봅니다.

1. 튜플 (Tuple): 절대 변하지 않는 안전 금고

튜플은 리스트와 99% 똑같습니다. 인덱스로 값을 찾고, 슬라이싱도 됩니다.

**딱 하나 다른 점은 '한 번 만들어지면 내부의 값을 절대 바꿀 수 없다'**는 것입니다. 실수로 데이터가 지워지거나 변경되는 것을 막고 싶을 때 사용합니다.

  • 만들기: 소괄호 ( )를 사용하거나 그냥 쉼표로 연결합니다.
t = (1, 2, 3, 4)
t2 = 10, 20, 30  # 소괄호 생략 가능

# ★주의: 원소가 1개인 튜플을 만들 때는 꼭 끝에 쉼표를 찍어야 합니다!
t3 = (10,)
t4 = 10,
  • 특징: 값을 변경할 수 없으므로 append(), remove() 같은 수정용 메소드는 사용할 수 없고, index()와 count() 정도만 지원합니다.

2. 딕셔너리 (Dictionary): 이름표(Key)가 붙은 보관함

리스트나 튜플은 '0번, 1번' 같은 순서(인덱스)로 데이터를 찾았습니다. 하지만 학생의 정보를 [ "홍길동", 20, "010-1234-5678" ] 처럼 묶어두면 두 번째 값이 나이인지 키인지 헷갈리죠. 딕셔너리는 사전처럼 **'단어(Key)'**와 **'뜻(Value)'**을 한 쌍으로 묶어 저장합니다.

  • 만들기: 중괄호 { }를 사용하며 키: 값 형태로 적습니다.
info = {
    "이름": "자비스",
    "나이": 30,
    "거주지": "서울"
}

3. 딕셔너리 다루기

  • 조회하기: 딕셔너리명[키] 로 찾습니다.
  • 추가 및 변경: 없는 키를 쓰면 추가되고, 있는 키를 쓰면 값이 변경(덮어쓰기)됩니다.
print(info["이름"])    # "자비스"
info["나이"] = 31      # 나이 값 변경
info["취미"] = "코딩"  # 새로운 키-값 쌍 추가

💡 딕셔너리 꿀팁 메소드

메소드역할

get() 안전하게 값 가져오기
keys() 키만
values() 값만
items() 키 + 값
  • get(키, 기본값): info["키"] 방식으로 찾을 때 해당 키가 없으면 에러(KeyError)가 나서 프로그램이 멈춥니다. 하지만 info.get("키")를 쓰면 에러 대신 안전하게 None을 돌려줍니다.
  • keys() / values() / items(): 딕셔너리 안에 있는 키들만, 값들만, 혹은 둘 다 쌍으로 묶어서 가져올 때 사용합니다.

.get() 메소드

✔ 없는 키 접근 → 무조건 get()

info = {"name": "철수"}

print(info["age"])  
# KeyError 발생 → 프로그램 멈춤
info = {"name": "철수"}

print(info.get("age"))  
# None 출력 (에러 없음)

 

.key() 메소드 - Key 값만

info = {"name": "철수", "age": 20}

print(info.keys())

#결과값 dict_keys(['name', 'age'])
for key in info.keys():
    print(key)
     
# name 
# age
for key in info:
    print(key)
    
# 이렇게도 많이 씀

 

.values() 

info = {"name": "철수", "age": 20}

print(info.values())

# dict_values(['철수', 20])
for value in info.values():
    print(value)
    
# 철수
# 20

 

.items()

✔ 딕셔너리 반복 → items()

info = {"name": "철수", "age": 20}

print(info.items())

dict_items([('name', '철수'), ('age', 20)])
for key, value in info.items():
    print(key, value)
    
# name
# 철수

 

코딩 테스트 단골 get으로 카운팅 만들기

words = ["a", "b", "a", "c", "a"]

count = {}

for w in words:
    count[w] = count.get(w, 0) + 1

print(count)


# {'a': 3, 'b': 1, 'c': 1}

📝 2편 복습 퀴즈

Q1. 다음 중 데이터 값이 한 번 저장되면 중간에 절대 변경, 추가, 삭제할 수 없는(Immutable) 자료구조는?

① 리스트 (List) ② 딕셔너리 (Dictionary) ③ 셋 (Set) ④ 튜플 (Tuple)

 

Q2. 원소가 딱 1개 들어있는 튜플(Tuple)을 올바르게 생성한 코드는 무엇인가요?

① t = (10) ② t = (10,) ③ t = [10] ④ t = {10}

 

Q3. 딕셔너리를 생성할 때 키(Key)와 값(Value)을 연결해주는 기호는 무엇인가요?

① = ② , ③ : ④ -

 

Q4. 딕셔너리 d = {"이름": "자비스"} 에서 값을 안전하게 조회하려고 합니다. 만약 찾는 키가 없더라도 에러를 발생시키지 않고 None을 반환하는 안전한 조회 메소드는?

① d.find("나이") ② d.search("나이") ③ d.get("나이") ④ d.value("나이")

 

Q5. 딕셔너리에 들어있는 모든 '키(Key)'들만 모아서 확인하고 싶을 때 사용하는 메소드는?

① items() ② values() ③ keys() ④ elements()

 

 

💡 정답 확인: Q1: ④ / Q2: ② (쉼표가 없으면 그냥 일반적인 수학 연산용 괄호로 인식하여 정수 10이 됩니다.) / Q3: ③ / Q4: ③ / Q5: ③

반응형