2.11 파이썬에서 딕셔너리 자료형 다루기

자료의 개수

리스트 자료형과 마찬가지로 딕셔너리 자료형의 원소의 개수도 len 명령으로 구할 수 있다.

x = {"a": 10, "b": 20}
len(x)
2

자료의 갱신, 추가, 삭제

딕셔너리 자료에서 특정한 키 값을 다른 값으로 바꾸려면 인덱싱 결과에 바꾸고자 하는 값을 대입한다.

x["a"]
10
x["a"] = 30
x
{'a': 30, 'b': 20}

딕셔너리 자료에 새로운 키와 이에 대응하는 값을 추가하려면 현재는 자료 갱신과 마찬가지로 인덱싱 결과에 값을 대입한다. 다만 이 때는 현재 존재하지 않는 키를 인덱스로 사용한다.

x["c"] = 40
x
{'a': 30, 'b': 20, 'c': 40}

특정한 키와 이에 해당하는 값을 없애려면 del 명령을 사용한다.

del x["b"]
x
{'a': 30, 'c': 40}

키 확인

딕셔너리 자료에 특정한 키가 있는지 없는지 알기 위해서는 in 명령을 사용한다. 만약 해당 키가 존재하면 True를, 존재하지 않으면 False를 반환한다.

"a" in x
True
"d" in x
False

딕셔너리 자료형의 반복

리스트 자료형처럼 딕셔너리 자료형에 있는 데이터도 for 반복문에 넣을 수 있다. 이 때 딕셔너리 자료형은 내부적으로 자료의 순서를 보장하지 않으므로 특정한 순서로 반복될 것을 기대하면 안된다는 점에 주의한다.

for 반복문에서 딕셔너리 자료형을 사용하는 방법에는 다음 세가지가 있다.

  1. 키만 반복하는 경우

  2. 값만 반복하는 경우

  3. 키와 값 쌍을 반복하는 경우

딕셔너리 자료형의 키 반복

딕셔너리 자료의 키를 반복하려면 리스트와 마찬가지로 for 반복문의 in 다음에 딕셔너리 자료형 변수를 넣으면 된다.

for k in x:
    print(k)
a
c

keys 메서드는 딕셔너리 자료의 키 목록을 리스트로 반환하므로 반복문에 이를 사용할 수도 있다.

x.keys()
dict_keys(['a', 'c'])
for k in x.keys():
    print(k)
a
c

딕셔너리 자료형의 값 반복

딕셔너리 자료의 키를 반복하려면 딕셔너리 자료의 값 목록을 리스트로 반환하는 values 메서드를 사용한다.

x.values()
dict_values([30, 40])
for v in x.values():
    print(v)
30
40

딕셔너리 자료형의 키와 값의 쌍 반복

딕셔너리 자료의 키와 값을 쌍으로 하여 반복하려면 items 메서드를 사용한다. 이 때 for 다음의 카운터 변수를 다음과 같이 두 개 지정해야 한다. 첫번째 카운터 변수에는 키가, 두번째 카운터 변수에는 값이 들어가게 된다.

for k, v in x.items():
    print("key [%s] => value [%d]" % (k, v))
key [a] => value [30]
key [c] => value [40]

연습 문제 2.11.1

딕셔너리에 저장된 자료가 다음과 같다.

data = {
    "철수": 98,
    "영희": 80,
    "순이": 100,
    "돌이": 70,
}

for문을 사용하여 다음과 같이 출력하는 코드를 만들어라.

철수        98
영희        80
순이       100
돌이        70
================
평균        87