파이썬 딕셔너리는 순서가 없는 가변 컨테이너 모델로, 문자열, 숫자, 튜플과 같은 다양한 유형의 객체를 저장할 수 있습니다. 본 문서에서는 파이썬에서 딕셔너리(Dict)의 상세한 작업 방법을 다루며, 생성, 접근, 삭제, 기타 작업 등을 포함합니다.
딕셔너리는 키(key)와 값(value)의 쌍으로 구성됩니다. 딕셔너리는 연관 배열이나 해시 테이블로도 알려져 있습니다. 기본 구문은 다음과 같습니다:
- 딕셔너리 생성
1 >>> userInfo = {'name':'김철수', 'age':30, 'job':'개발자'}
2 팁:
3 딕셔너리에 리스트 포함: studentInfo={'홍길동':[25,'컴퓨터공학'],"이영희":[28,'전자공학']}
4 딕셔너리에 딕셔너리 포함: personalInfo={'홍길동':{'나이':25,'직업':'프로그래머'},"이영희":{'나이':28,'직업':'디자이너'}}
5 주의:
6 각 키와 값은 콜론(:)으로 구분되며, 각 쌍은 쉼표로 구분됩니다. 전체는 중괄호({}) 안에 위치합니다.
7 키는 고유해야 하지만 값은 그렇지 않아도 됩니다.
- 딕셔너리 값에 접근하기
1 >>> employeeData = {'emp1':'매니저', 'emp2':'개발자', 'emp3':'디자이너'}
2 >>> print(employeeData['emp1'])
3 매니저
4 딕셔너리에 없는 키로 데이터에 접근하면 다음과 같은 오류가 발생합니다:
5 >>> print(employeeData['emp4'])
6 Traceback (most recent call last):
7 File "<pyshell#110>", line 1, in <module>
8 print(employeeData['emp4'])
9
10 모든 값에 접근하기
11 >>> productInfo = {'item1':'노트북', 'item2':'마우스', 'item3':'프린터'}
12 >>> for key in productInfo:
13 print(key, productInfo[key])
14 item3 프린터
15 item2 마우스
16 item1 노트북
- 딕셔너리 수정하기
1 >>> carData = {'model':'소나타', 'year':2020, 'color':'흰색'}
2 >>> carData['color']='검정색'
3 >>> print(carData)
4 {'year': 2020, 'model': '소나타', 'color': '검정색'}
- 딕셔너리 삭제하기
1<strong> 단일 요소 삭제
</strong> 2 >>> bookData = {'title':'파이썬 프로그래밍', 'author':'김작가', 'price':30000}
3 >>> del bookData['price']
4 >>> print(bookData)
5 {'author': '김작가', 'title': '파이썬 프로그래밍'}
6
7 <strong>딕셔너리의 모든 요소 삭제</strong>
8 >>> menuData={'menu1':'커피','menu2':'차','menu3':'주스'}
9 >>> menuData.clear()
10 >>> print(menuData)
11 {}
12
13
14 <strong>전체 딕셔너리 삭제. 삭제 후 딕셔너리에 접근하면 예외가 발생합니다.</strong>15 >>> studentData = {'name':'학생1', 'id':1001, 'major':'컴퓨터공학'}
16 >>> del studentData
17 >>> print(studentData)
18 Traceback (most recent call last):
19 File "<pyshell#121>", line 1, in <module>
20 print(studentData)
21 NameError: name 'studentData' is not defined
- 딕셔너리 업데이트하기
1 update() 메서드를 사용하여 한 딕셔너리의 내용을 다른 딕셔너리에 추가할 수 있습니다:
2 >>> config1 = {'debug':True, 'port':8080}
3 >>> config2={'host':'localhost'}
4 >>> config1.update(config2)
5 >>> print(config1)
6 {'host': 'localhost', 'port': 8080, 'debug': True}
- 매핑 관련 함수
1 >>> dict(name='홍길동', age=30)
2 {'age': 30, 'name': '홍길동'}
3 >>> userDict = dict(name='이영희', age=25)
4 >>> userDict
5 {'age': 25, 'name': '이영희'}
6 >>> copyDict = dict(**userDict)
7 >>> copyDict
8 {'age': 25, 'name': '이영희'}
9
10 copyDict = userDict.copy()
- 딕셔너리 키의 특성
1 딕셔너리 값은 제한 없이 어떤 파이썬 객체도 가질 수 있으며, 표준 객체이든 사용자 정의 객체이든 상관없습니다. 하지만 키는 그렇지 않습니다.
2 기억해야 할 두 가지 중요한 점:
3 1) 동일한 키가 두 번 나타나는 것은 허용되지 않습니다. 생성 시 동일한 키에 두 번 값을 할당하면 마지막 값이 저장됩니다
4 >>> userInfo={'id':'user1','name':'홍길동','id':'user2'}
5 >>> print(userInfo)
6 {'name': '홍길동', 'id': 'user2'}
7
8 2) 키는 불변해야 하므로 숫자, 문자열 또는 튜플을 사용할 수 있지만 리스트는 사용할 수 없습니다
9 >>> invalidDict = {['id']:'user1', 'name':'홍길동', 'age':30}
10 Traceback (most recent call last):
11 File "<pyshell#125>", line 1, in <module>
12 invalidDict = {['id']:'user1', 'name':'홍길동', 'age':30}
13 TypeError: unhashable type: 'list'
- 딕셔너리 내장 함수 및 메서드
<strong>파이썬 딕셔너리는 다음과 같은 내장 함수를 포함합니다:
</strong>1. cmp(dict1, dict2): 두 딕셔너리 요소를 비교합니다. (파이썬 3 이후에서는 사용 불가)
2. len(dict): 딕셔너리 요소 개수, 즉 키의 총수를 계산합니다.
3. str(dict): 딕셔너리의 출력 가능한 문자열을 반환합니다.
4. type(variable): 입력된 변수의 유형을 반환하며, 변수가 딕셔너리이면 딕셔너리 유형을 반환합니다.
<strong>파이썬 딕셔너리는 다음과 같은 내장 메서드를 포함합니다:
</strong>1. mydict.clear(): 딕셔너리 내의 모든 요소를 삭제합니다
2. mydict.copy(): 딕셔너리의 얕은 복사본을 반환합니다
3. mydict.fromkeys(): 시퀀스 seq의 요소를 딕셔너리의 키로 사용하여 새 딕셔너리를 만들고, val을 모든 키의 초기값으로 설정합니다
4. mydict.get(key, default=None): 지정된 키의 값을 반환하며, 값이 딕셔너리에 없으면 default 값을 반환합니다
5. mydict.has_key(key): 키가 딕셔너리 mydict에 있으면 true를 반환하고, 그렇지 않으면 false를 반환합니다
6. mydict.items(): (키, 값) 튜플 배열을 반환하는 리스트를 반환합니다
7. mydict.keys(): 딕셔너리의 모든 키를 리스트로 반환합니다
8. mydict.setdefault(key, default=None): get()과 유사하지만, 키가 딕셔너리에 없으면 키를 추가하고 값을 default로 설정합니다
9. mydict.update(dict2): 딕셔너리 dict2의 키/값 쌍을 mydict에 업데이트합니다
10. mydict.values(): 딕셔너리의 모든 값을 리스트로 반환합니다