Programming/Python

[Python 3.7] 파이썬 딕셔너리란?

Nirsa 2020. 1. 12. 23:37
반응형

 

1) 딕셔너리 사용

여태 리스트와 튜플은 값이 들어가도 그 값이 어떤 의미를 가지는건지 알 수 없었는데, 그 값(value)들에게 이름(key)을 붙여서 매칭시켜주는게 파이썬의 딕셔너리(dictionary) 입니다.

딕셔너리는 딕셔너리 = {키1: 값1, 키2: 값2 …} 와 같이 중괄호{}를 사용합니다.

* 대괄호[] = tuple, 중괄호{} = dictionary, 괄호() = list

키에는 하나의 값만을 지정할 수 있어서 키-값 쌍이라 부르고, 만약 키가 중복되면 가장 뒤에 있는 키-값으로 인식 됩니다. 대신 문자열일 경우 '' 으로 묶어주어야 하고 안묶어주면 NameError 가 발생합니다.

키에는 어떠한 자료형이던(문자열, 정수, 실수 등) 가능하고 섞어서 사용할수도 있지만, 키에는 리스트나 튜플, 딕셔너리는 사용할 수 없습니다.  값은 어떠한 자료형이던 사용이 가능하고, 리스트나 튜플 딕셔너리 등 모두 사용 가능합니다.

info = {} 와 같이 비어있는 딕셔너리도 생성이 가능하고, dic를 사용하여 딕셔너리를 만들 수 있습니다. 아래 내용은 굳이 당장 외우거나 억지로 이해하지 않으셔도 됩니다. dict 로 딕셔너리를 만들 수 있구나 하고 필요할때 찾아서 볼 수 있으면 되기 때문에 처음보는 zip 이 있는 dict(zip([키1, 키2], [값1, 값2])) 만 설명 하겠습니다.

  • 딕셔너리 = dict(키1=값1, 키2=값2 …)
  • 딕셔너리 = dict(zip([키1, 키2 …], [값1, 값2 …]))
  • 딕셔너리 = dict([키, 값1), (키2, 값2))
  • 딕셔너리 = dict({키1: 값1, 키2: 값2})

zip 은 [키1, 키2], [값1, 값2] 를 (키1, 값1) (키2, 값2)와 같이 묶어주는 기능을 합니다. 때문에 위의 이미지처럼 zip을 사용해 묶어서 키-값쌍을 만들어주고 dict로 딕셔너리 형태로 변환 시켜주는 겁니다.

dict 대신 list 를 사용하면 리스트 형태로 변환되는것을 확인하실 수 있습니다.

 

2) 딕셔너리 키에 접근 및 값 할당

딕셔너리 키에 접근할때는 딕셔너리[키] 를 입력하면 됩니다. 대신 키를 사용하여 접근하게 되면 값이 출력되고, 키를 입력하지 않고 딕셔너리만 입력하면 딕셔너리의 모든 키-값이 출력 됩니다.

값의 할당은 딕셔너리[키] = 값 입니다. 여태 항상 할당 하던것과 같이 변수 = 값의 느낌이고, 바뀐건 그저 키를 지정해줘서 그 키에 접근하고 값을 할당할 수 있도록 하는 것 뿐 입니다.

info['age'] = 200.9 를 사용하여 딕셔너리 info 에 있는 age 라는 키를 찾아서, 값은 200.9 로 변경 하였습니다.

 

3) 딕셔너리 키 유무 확인과 개수

딕셔너리에 키가 있는지 확인하기 위해서는  in 연산자를 사용 하면 됩니다. ( in 연산자에 대한 설명은 https://nirsa.tistory.com/38?category=861479 의 2.객체 비교를 참고 해주세요 )

키 in 딕셔너리 으로 사용 하시면 되고, 키가 문자열일 경우 '' 으로 반드시 묶어 주어야 합니다. 여기서 햇갈릴 수 있는데, 값(value)을 이용해 확인하는것이 아니고 키(key)를 이용하여 확인하는 것 이니 주의 해주세요.

딕셔너리의 길이를 구하는건 리스트, 튜플과 같이 len 을 이용하여 사용하는데, 키-값 한쌍이 길이 1 입니다.

키-값 한쌍이 길이 1이기 때문에 len(info) 로 길이를 구할 때 위의 상황에는 길이 3으로 출력됩니다.

반응형