[Python] 딕셔너리 개요 / 메소드
딕셔너리(dictionary)
- 리스트와 같이 값을 저장하는 자료구조로, 파이썬에서는 기본 자료형으로 제공되고 있다.
- 리스트와는 달리 값(value)과 관련된 키(key)가 있다는 것이 큰 차이점이다.
- 서로 관련되어 있는 키와 값이 함께 저장되는데, 이것을 키-값 쌍(key-value pair)이라고 한다.
딕셔너리 생성 방법
- {}를 이용해서 공백 딕셔너리를 생성한다.
phone_book = { } # 공백 딕셔너리를 생성한다.
- [] 안에 키 값을 적고 값을 추가한다.
phone_book["홍길동"] = "010-1234-5678"
- 출력하면 딕셔너리의 항목(item)이 쉼표로 구분되어 출력된다.
print(phone_book)
>> {'홍길동': '010-1234-5678'}
- 딕셔너리를 생성과 동시에 초기화하는 방법도 있다.
phone_book = {"홍길동": "010-1234-5678"}
딕셔너리의 기능
- 리스트와 마찬가지로 딕셔너리에는 어떤 유형의 값도 저장할 수 있다.
- 딕셔너리에서 가장 중요한 연산은 키로 연관된 값을 찾아내는 것이다.
print(phone_book["홍길동"])
>> 010-1234-5678
- 리스트에서는 인덱스를 가지고 항목을 찾을 수 있었지만, 딕셔너리에서는 키가 있어야 값을 찾을 수 있다.
- 딕셔너리에서 사용되는 모든 키를 출력하려면 다음과 같이 keys() 메소드를 사용하면 된다.
phone_book.keys()
>> dict_keys(['이순신', '홍길동', '강감찬'])
- 딕셔너리에서 사용되는 모든 값을 출력하려면 values()를 사용한다.
phone_book.values()
>> dict_values(['010-1111-1111', '010-1234-5678', '010-0000-0000'])
- 딕셔너리 내부의 모든 값을 출력하려면 items()를 사용할 수도 있다. for문에서 phone_book.items()로 함수를 호출하면 (키, 값) 튜플이 반환되므로 활용이 가능하다.
phone_book.items()
>> dict_items([('홍길동', '010-1234-5678'), ('강감찬', '010-0000-0000'), ('이순신', '010-1111-1111')])
for name, phone_num in phone_book.items(): # 딕셔너리의 항목들을 시퀀스로 추출
print(name, ' : ', phone_num)
>> 홍길동 : 010-1234-5678
>> 강감찬 : 010-0000-0000
>> 이순신 : 010-1111-1111
딕셔너리의 메소드들
- 딕셔너리의 모든 항목을 하나씩 출력하려면 리스트처럼 for문을 사용할 수 있다.
- keys()메소드는 딕셔너리에 있는 키 항목을 시퀀스로 반환하므로, 이 값을 받아 phone_book[key]로 접근이 가능하다.
for key in phone_book.keys():
print(key, ' : ', phone_book[key])
>> 홍길동 : 010-1234-5678
>> 강감찬 : 010-0000-0000
>> 이순신 : 010-1111-1111
- 딕셔너리 안의 항목들은 자동으로 정렬되지 않으므로 sorted() 함수를 이용하여 딕셔너리의 키를 기준으로 정렬한다.
sorted(phone_book)
>> ['강감찬', '이순신', '홍길동']
- sorted() 함수는 phone_book.item()과 같이 키, 값의 튜플 쌍을 받아 정렬할 수 있다.
- 람다 표현식은 x를 인자로 받아 x의 첫 항목인 x[람다]를 반환하는 기능을 한다.
sorted_phone_book = sorted(phone_book.items(), key = lambda x: x[0])
print(sorted_phone_book)
>> [('강감찬', '010-0000-0000'), ('이순신', '010-1111-1111'), ('홍길동', '010-1234-5678')]
- 딕셔너리의 항목을 삭제하려면 del을 사용할 수 있다.
del phone_book["홍길동"]
- keys() : 딕셔너리 내의 모든 키를 반환
- values() : 딕셔너리 내의 모든 값을 반환
- items() : 딕셔너리 내의 모든 항목을 [키]:[값] 쌍으로 반환
- get(key) : 키에 대한 값을 반환. 키가 없으먼 None 반환
- pop(key) : 키에 대한 값을 반환하고 해당 항목 삭제. 키가 없으면 KeyError 예외 발생
- popitem() : 제일 마지막에 입력된 항목을 반환하고 해당 항목 삭제
- clear() : 딕셔너리 내의 모든 항목을 삭제