산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> python

Python 딕셔너리 마스터하기: 생성, 조작, 고급 기법

Python 딕셔너리

이 종합 가이드는 Python 딕셔너리(사전)를 설명합니다. 생성, 접근, 요소 추가/삭제, 내장 메서드 활용법까지 다룹니다.

동영상: Python 딕셔너리로 키/값 쌍 저장하기

Python 딕셔너리는 키/값 쌍의 순서 없는 컬렉션입니다. 각 항목은 고유하고 불변인 키를 어떤 타입의 값과도 연결합니다.


Python 딕셔너리 생성하기

딕셔너리 정의는 간단합니다: 중괄호 {} 안에 쉼표로 구분된 키/값 쌍을 넣습니다. 키는 불변(문자열, 숫자, 불변 요소로 된 튜플)이어야 하며 고유해야 합니다. 값은 어떤 타입이든 가능하고 중복될 수 있습니다.

# 빈 딕셔너리
my_dict = {}
# 정수 키 딕셔너리
my_dict = {1: 'apple', 2: 'ball'}
# 혼합 키 딕셔너리
my_dict = {'name': 'John', 1: [2, 4, 3]}
# dict() 사용
my_dict = dict({1:'apple', 2:'ball'})
# 쌍 시퀀스에서 생성
my_dict = dict([(1,'apple'), (2,'ball')])

위 모든 방식이 같은 딕셔너리 구조를 만듭니다.


딕셔너리에서 요소 접근하기

딕셔너리 값은 키로 대괄호 [] 또는 get() 메서드로 조회. 대괄호는 키 없을 때 KeyError 발생; get()은 기본적으로 None 반환.

# get vs [] 조회
my_dict = {'name': 'Jack', 'age': 26}
# 출력: Jack
print(my_dict['name'])
# 출력: 26
print(my_dict.get('age'))
# 없는 키 접근 시 None 반환
print(my_dict.get('address'))
# KeyError
print(my_dict['address'])

출력

Jack 26 None Traceback (most recent call last): File "<string>", line 15, in <module> print(my_dict['address']) KeyError: 'address'

딕셔너리 요소 변경 및 추가

딕셔너리는 가변입니다. 기존 키에 할당하면 값 갱신, 새 키에 할당하면 새 항목 추가.

# 딕셔너리 요소 변경 및 추가
my_dict = {'name': 'Jack', 'age': 26}
# 값 갱신
my_dict['age'] = 27
# 출력: {'age': 27, 'name': 'Jack'}
print(my_dict)
# 항목 추가
my_dict['address'] = 'Downtown'
# 출력: {'address': 'Downtown', 'age': 27, 'name': 'Jack'}
print(my_dict)

출력

{'name': 'Jack', 'age': 27} {'name': 'Jack', 'age': 27, 'address': 'Downtown'}

딕셔너리에서 요소 제거하기

pop()으로 특정 키 삭제하며 값 반환. popitem()은 임의 쌍 제거, clear()는 전체 비우기. del 키워드로 개별 항목이나 변수 자체 삭제 가능.

# 딕셔너리 요소 제거
# 딕셔너리 생성
squares = {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}
# 특정 항목 제거, 값 반환
# 출력: 16
print(squares.pop(4))
# 출력: {1: 1, 2: 4, 3: 9, 5: 25}
print(squares)
# 임의 항목 제거, (키,값) 반환
# 출력: (5, 25)
print(squares.popitem())
# 출력: {1: 1, 2: 4, 3: 9}
print(squares)
# 모든 항목 제거
squares.clear()
# 출력: {}
print(squares)
# 딕셔너리 자체 삭제
del squares
# 에러 발생
print(squares)

출력

16 {1: 1, 2: 4, 3: 9, 5: 25} (5, 25) {1: 1, 2: 4, 3: 9} {} Traceback (most recent call last): File "<string>", line 30, in <module> print(squares) NameError: name 'squares' is not defined

Python 딕셔너리 메서드

아래 표는 주요 딕셔너리 메서드와 용도. 다수는 뒤따르는 예제에서 시연.

메서드설명
clear()딕셔너리에서 모든 항목 제거
copy()딕셔너리의 얕은 복사본 반환
fromkeys(seq[, v])seq에서 새 딕셔너리 생성, 모든 키를 v(기본 None)로 설정
get(key[,d])key의 값 반환; 없으면 d(기본 None) 반환
items()딕셔너리의 (키, 값) 쌍 뷰 반환
keys()딕셔너리의 키 뷰 반환
pop(key[,d])key 삭제 후 값 또는 d 반환; 키 없는데 d 없으면 KeyError
popitem()임의 (키,값) 쌍 제거 및 반환; 비었으면 KeyError
setdefault(key[,d])key 값 반환; 없으면 key에 d(기본 None) 삽입 후 d 반환
update([other])other에서 키/값 쌍 삽입/갱신, 기존 키 덮어씀
values()딕셔너리의 값 뷰 반환

예제 사용:

# 딕셔너리 메서드
marks = {}.fromkeys(['Math', 'English', 'Science'], 0)
# 출력: {'English': 0, 'Math': 0, 'Science': 0}
print(marks)
for item in marks.items():
    print(item)
# 출력: ['English', 'Math', 'Science']
print(list(sorted(marks.keys())))

출력

{'Math': 0, 'English': 0, 'Science': 0} ('Math', 0) ('English', 0) ('Science', 0) ['English', 'Math', 'Science']

Python 딕셔너리 컴프리헨션

딕셔너리 컴프리헨션은 이터러블에서 딕셔너리를 간결하게 만드는 문법. 패턴: {key: value for element in iterable}.

# 딕셔너리 컴프리헨션
squares = {x: x*x for x in range(6)}
print(squares)

출력

{0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25}

명령형 버전과 동등:

squares = {}
for x in range(6):
    squares[x] = x*x
print(squares)

출력

{0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25}

컴프리헨션에 여러 루프와 if 필터 포함 가능. 예: 홀수 제곱만.

# 조건부 딕셔너리 컴프리헨션
odd_squares = {x: x*x for x in range(11) if x % 2 == 1}
print(odd_squares)

출력

{1: 1, 3: 9, 5: 25, 7: 49, 9: 81}

자세한 내용은 Python 딕셔너리 컴프리헨션 참조.


기타 딕셔너리 연산

딕셔너리 멤버십 테스트

in 연산자로 키 존재 여부 확인; 값은 검사하지 않음.

# 딕셔너리 키 멤버십 테스트
squares = {1: 1, 3: 9, 5: 25, 7: 49, 9: 81}
# 출력: True
print(1 in squares)
# 출력: True
print(2 not in squares)
# 키만 테스트, 값 아님
# 출력: False
print(49 in squares)

출력

True True False

딕셔너리 순회하기

키를 직접 순회하며 값 접근.

# 딕셔너리 순회
squares = {1: 1, 3: 9, 5: 25, 7: 49, 9: 81}
for i in squares:
    print(squares[i])

출력

1 9 25 49 81

딕셔너리 내장 함수

all(), any(), len(), sorted() 같은 표준 함수가 딕셔너리에 자주 적용됨.

함수설명
all()모든 키가 True로 평가되면 True(빈 딕셔너리도 True)
any()어떤 키라도 True면 True; 빈 딕셔너리는 False
len()키/값 쌍 개수
cmp()두 딕셔너리 비교(Python 3에서 제거됨)
sorted()정렬된 키 리스트 반환

예제:

# 딕셔너리 내장 함수
squares = {0: 0, 1: 1, 3: 9, 5: 25, 7: 49, 9: 81}
# 출력: False
print(all(squares))
# 출력: True
print(any(squares))
# 출력: 6
print(len(squares))
# 출력: [0, 1, 3, 5, 7, 9]
print(sorted(squares))

출력

False True 6 [0, 1, 3, 5, 7, 9]

python

  1. 파이썬 데이터 타입 마스터하기: 실전 가이드
  2. 파이썬 연산자 마스터하기: 종합 가이드
  3. 파이썬 pass 문 마스터하기: 실전 가이드
  4. 파이썬 함수 인자 마스터하기: 위치, 키워드, 기본 매개변수
  5. Python 이터레이터: 작동 원리와 직접 만들기
  6. Python 클로저 이해하기: 중첩 함수가 변수 캡처하는 방법
  7. Python datetime 마스터하기: 날짜, 시간, 타임존 실전 가이드
  8. 파이썬(Python) 개요: 고수준, 가독성, 인터랙티브, 객체지향
  9. 파이썬 숫자(Numbers): 불변 숫자 데이터 타입 이해하기
  10. 파이썬 문자열 마스터하기: 생성, 접근, 조작 총정리