반응형

아래 모든 이미지는 클릭하면 크게 확대 됩니다.

 

 파이썬 기초#8딕셔너리(dictionary) 총정리!

1. 《  딕셔너리 란? 》
 : 딕셔너리란? 파이썬에서 리스트와 함께 가장 많이 사용되는 데이터 스트럭쳐 중 하나입니다. 
 딕셔너리는 key  와  value 를 사용하여 데이터를 저장합니다.  그리고 python3.6 이하에서는 스트링, 리스트, 튜플, 등과는 다르게 순서가 없는 데이터 타입(data type)으로 정의했으나,  python3.7 이상에서는 순서가 있도록 업데이트 되었습니다.
 딕셔너리는 컬리브레이스 ( 중괄호 { } )를 사용하여 정의합니다. 
아래, 내용이 비어있는 딕셔너리를 선언하고 클래스 타입을 확인해 볼게요.

2. 《  딕셔너리 사용 형식 》
 : 딕셔너리의 형식은 name = { key1 : value1 ,  key2 : value2 , key3 : value3 ...  }
처럼 key 값과 value값이 1:1로 매칭되는 형식의 데이터들을 갖습니다. 
딕셔너리는 리스트나 튜플처럼 순차적으로 해당 요솟값을 구하지 않고 Key를 이용해 Value를 얻습니다. 이것이 딕셔너리의 큰 특징입니다.

예시 1) 
아래 이미지처럼, Key 와 Value 한 세의 데이터 구조로 입력되며,  Value 값은 Key값을 이용해 호출하거나 처리할 수 있습니다.

 

예시 2) 아래 이미지처럼, 하나의 연관성 있는 데이터의 모음 형태로도 사용할 수 있습니다.
그리고,  name1, name2,  phone1, phone2, ...  와 같은 형식으로 연속적인 데이터를 구성할 수 있습니다.

 

3. 《  딕셔너리 데이터 쌍(Pair) 추가, 삭제하기 》
 :  딕셔너리 쌍을 추가하는 방법과 삭제하는 방법을 알아 볼게요.
 
우선, 아래와 같은 과자(snack)와 가격에 대한 것을 예시로 들어 볼게요.


▶ 요소 추가하기 예시)
아래 이미지에서, 과자 요소 하나를 추가할 때 사용하는 방법입니다.
  딕셔너리 이름['Key']='Value' 

 

▶ 요소 삭제하기 예시)
아래 이미지에서, 과자 요소 하나를 삭제할 때 사용하는 방법입니다.
  del 딕셔너리 이름['Key']

 

▶ 요소 수정하기 예시)
아래 이미지에서, 과자 요소 중,  값(Value)을 수정할 때 사용하는 방법입니다.
  딕셔너리 이름['Key'] = 'Value'

 

4. 《  딕셔너리의 특징(성격) 》
 :  리스트의 경우 내용이 같아도 순서가 다를 경우 서로 다른 리스트로 인식됩니다.  
하지만,  딕셔너리의 경우 키(Key)와 값(Value)인 요소만 같으면 순서가 달라도 같은 딕셔너리로 인식합니다.  즉, 들어 있는 순서는 중요하지 않고 관심도 없기 때문에 딕셔너리에 저장된 내용(Key와 Value)의 수와 종류만 같다면 같은 딕셔너리로 인식합니다.   따라서,  저장 순서가 중요한(필요한) 데이터가 있다면 딕셔너리에 담지 말아야 합니다.

1. 리스트 예시(리스트는 내용과 순서가 같아야 동일한 리스트로 인식)
2. 딕셔너리 예시(딕셔너리는 내용만 같으면 들어있는 순서가 달라도 동일한 딕셔너리로 인식)

 

5. 《  딕셔너리의 in 연산과 not in 연산 》
 :  딕셔너리 내용에 특정 키(Key)가 있는지 확인할 때,  in 연산을 사용합니다. 
딕셔너리로 데이터의 종류별로 묶어 놓을 수 있는데요,  예를 들어, 상품과 가격정보를  과자류와 음료류로 묶어 놓았을 때, 과자류의 상품정보를 수정하려다 음료류의 상품정보를 수정해버리는 실수를 가정할 수 있는데요, 이럴 때, 해당 키값이 요소에 있는지 확인을 먼저하고 진행하는 것이 필요할 수 있습니다. 

 예시 1) 아래는 딕셔너리 이름 지정이 잘못되어, 값 수정을 못하고 요소가 추가된 모습입니다.

딕셔너리 이름 지정이 잘못되어, 값 수정을 못하고 요소가 추가된 모습

예시 2) 따라서 아래와 같이 코딩을 할 때, 해당 딕셔너리에 요소가 있는지 , 확인하기 위해 in 연산자를 사용합니다.
그리고, if 연산자를 활용하여 쉽게 처리할 수 있습니다.

in 연산자와 if문을 활용하면, 잘못된 딕셔너리에 요소 추가 되는 것을 방지할 수 있습니다

 

예시 3) 반대로 아래처럼, not in 연산자를 사용하여, 해당 키값이 있는지 확인하여 없을 경우에 추가해 줄 수도 있습니다.

not in 연산자를 사용하면, 해당 요소의 중복여부를 확인하여 추가할 수 있습니다

 주의해야 할 것은, 딕셔너리에서 in과 not in 연산자에서 확인하는 대상은 키(Key) 이지,  값(Value)이 아니라는 점 기억하세요.

 

6. 《  딕셔너리의 for 루프 》
 :  딕셔너리의 Key를 대상으로 for 루프가 가능합니다. (단, Value 값으로는 대상을 돌릴 수는 없습니다)

예시 1) 음료 데이터 딕셔너리의 키 목록을 for루프로 출력해 볼 수 있습니다.

딕셔너리에서 키값으로 for문을 돌리는 경우 예시입니다.

 

  딕셔너리에서  for문을 사용할 수 있는 것이 중요한 이유는 , 데이터 요소가 아주 많을 경우 수정이 필요할 때 for문을 돌릴 수 있는 것이 중요합니다.  예를 들어 음료 요소로 구성된 딕셔너리에서  가격 변동이 발생하여, 각각의 가격을 올리거나 내려야 할 경우, 한 번에 쉽게 적용시킬 수 있기 때문입니다. 
 예시 2) 아래 예시는 처음, 음료 가격에 20원씩 일률적으로 상승 시킬 경우 예시이며,  이어서 상품가격에 10%의 할인을 적용할 경우 가격 수정에 대한 예시를 들었습니다. 

일률적으로 딕셔너리 Value 값을 20원씩 올리려 하는 경우와 ,  10%의 할인 가격으로 조정하는 경우의 예시 입니다

 

반응형