프로그래밍/파이썬

[파이썬] 딕셔너리 (Dict)

znvlcm 2021. 6. 15. 16:51

Dictionary 딕셔너리

json과 비슷

순서X | 중복X | 삽입O | 삭제X

구성 key-value

 

1. 선언

  • a = {'name' : 'Lee', 'phone' : '000-0000-0000', 'age' : 19}
    • => a :  {'name': 'Lee', 'phone': '000-0000-0000', 'age': 19}
  • ##  키는 중복X(name덮어쓰기 Park->Lee) 값은 중복O(age값과 favorite값 모두 19)
  • b = {'name' : 'Park', 'phone' : '000-0000-0001', 'age' : 19, 'name' : 'Lee', 'favoriteNo': 19}
    • => b : {'name': 'Lee', 'phone': '000-0000-0001', 'age': 19, 'favoriteNo': 19}
  • c = {0:'Korea', 1:'America', 2:'China'}
    • => c :  {0: 'Korea', 1: 'America', 2: 'China'}
  • d = {'arr' : [1,2,3,4,'a']}=> d :  {'arr': [1, 2, 3, 4, 'a']}

타입조회 :  <class 'dict'>

 

2. 조회

a :  {'name': 'Lee', 'phone': '000-0000-0000', 'age': 19}

d :  {'arr': [1, 2, 3, 4, 'a']}

1) 직접조회(키가 없을 시 에러)

  • a["name"] => Lee
  • a['school'] => KeyError: 'school'        ## 키가 존재하지 않을 때 에러
  • d['arr'][1:-1] => [2, 3, 4]      ## 값이 배열일 때 슬라이싱가능

 

2) get메서드로 조회

  • a.get("name") => Lee
  • a.get("school") => None  ## 키가 존재하지 않으면 None반환

 

3. 추가

추가 전  a:  {'name': 'Lee', 'phone': '000-0000-0000', 'age': 19}

  • a['city'] = 'Seoul'
  • a['rank'] = [1,3,4]
  • a['family'] = ('엄마','아빠')

추가 후  a:  {'name': 'Lee', 'phone': '000-0000-0000', 'age': 19, 'city': 'Seoul', 'rank': [1, 3, 4], 'family': ('엄마', '아빠')}

 

4. keys, values, items

반복문이 편리 : 데이터 전후처리, 대량데이터가공에 편리

1) keys 키만 추출하여 반환

  • a.keys() =>dict_keys(['name', 'phone', 'age', 'city', 'rank', 'family']) ##set과 비슷한 keyView를 반환     
  • list(a.keys()) =>['name', 'phone', 'age', 'city', 'rank', 'family']  ##키뷰를 리스트로 반환
  • list(a.keys())[1:3] =>['phone', 'age']  ##리스트로 반환 후 슬라이싱가능
  • a.keys() => TypeError: 'dict_keys' object is not subscriptable  ## 키뷰는 슬라이싱불가

2) values 밸류값만 추출하여 반환

  • a.values() =>dict_values(['Lee', '000-0000-0000', 19, 'Seoul', [1, 3, 4], ('엄마', '아빠')]) ## ValuesView반환
  • list(a.values()) =>['Lee', '000-0000-0000', 19, 'Seoul', [1, 3, 4], ('엄마', '아빠')] ## ValuesView반환후 리스트로 변환
  • list(a.values())[1:3] =>['000-0000-0000', 19]  ##리스트로 반환 후 슬라이싱가능
  • a.values() => TypeError: 'dict_values' object is not subscriptable  ## valuesView는 슬라이싱불가

 

3) items -밸류쌍을 반환

  • a.items() =>dict_items([('name', 'Lee'), ('phone', '000-0000-0000'), ('age', 19), ('city', 'Seoul'), ('rank', [1, 3, 4]), ('family', '엄마', '아빠'))]) ## set과 비슷한 itemsView를 반환
  • list(a.items()) =>[('name', 'Lee'), ('phone', '000-0000-0000'), ('age', 19), ('city', 'Seoul'), ('rank', [1, 3, 4]), ('family', ('엄마', '아빠'))] ## itemsView를 튜플쌍이 들어있는 리스트 변환
  • list(a.items())[1:3] =>[('phone', '000-0000-0000'), ('age', 19)]  ##리스트로 반환 후 슬라이싱가능
  • a.items() => TypeError: 'dict_items' object is not subscriptable  ## valuesView는 슬라이싱불가

 

5. 키 존재여부확인

list(a.keys()) =>['name', 'phone', 'age', 'city', 'rank', 'family']

  • 'name' in a =>  True
  • 'name' not in a =>  False
  • 'nickname' in a =>  False
  • 'nickname' not in a =>  True
더보기
print("Dictionary 딕셔너리")
print("json과 비슷 ")
print("순서X | 중복X | 삽입O | 삭제X")
print("구성 key-value")

## 선언
print("\n1. 선언")
a = {'name' : 'Lee', 'phone' : '000-0000-0000', 'age' : 19}
b = {'name' : 'Park', 'phone' : '000-0000-0001', 'age' : 19, 'name' : 'Lee', 'favoriteNo': 19}
c = {0:'Korea', 1:'America', 2:'China'}
d = {'arr' : [1,2,3,4,'a']}
print("a = {'name' : 'Lee', 'phone' : '000-0000-0000', 'age' : 19} \n=> a : ",a)
print("##  키는 중복X(name덮어쓰기 Park->Lee) 값은 중복O(age값과 favorite값 모두 19)")
print("b = {'name' : 'Park', 'phone' : '000-0000-0001', 'age' : 19, 'name' : 'Lee', 'favoriteNo': 19}\n=> b :",b)
print("c = {0:'Korea', 1:'America', 2:'China'} \n=> c : ",c)
print("d = {'arr' : [1,2,3,4,'a']} \n=> d : ",d)
print("타입조회 : ", type(a))

## 조회
print("\n1. 조회")
print("a : ",a)
print("d : ",d)
print("\n1) 직접조회(키가 없을 시 에러)")
print('a["name"] => %s'%a["name"])
print("a['school'] => KeyError: 'school' \t ## 키가 존재하지 않을 때 에러")
print("d['arr'][1:-1] => %s \t ## 값이 배열일 때 슬라이싱가능 "% d['arr'][1:-1] )
print("\n2) get메서드로 조회")
print('a.get("name") => %s'%a.get("name"))
print('a.get("school") => %s\t ## 키가 존재하지 않으면 None반환'%a.get("school"))

## 딕셔너리 추가
print("\n2. 추가")
print("추가 전  a: ",a)
a['city'] = 'Seoul'
a['rank'] = [1,3,4]
a['family'] = ('엄마','아빠')
print("a['city'] = 'Seoul'")
print("a['rank'] = [1,3,4]")
print("a['family'] = ('엄마','아빠')")
print("추가 후  a: ",a)

## keys, values, items
print("\n3. keys, values, items 반복문이 편리 : 데이터 전후처리, 대량데이터가공에 편리")

print("\n1) keys 키만 추출하여 반환")
print("a.keys() =>%s ##set과 비슷한 keyView를 반환"%a.keys())
print("list(a.keys()) =>%s  ##키뷰를 리스트로 반환"%list(a.keys()))
print("list(a.keys())[1:3] =>%s  ##리스트로 반환 후 슬라이싱가능 \na.keys() => TypeError: 'dict_keys' object is not subscriptable  ## 키뷰는 슬라이싱불가 "%list(a.keys())[1:3])

print("\n2) values 밸류값만 추출하여 반환")
print("a.values() =>%s ## ValuesView반환"%a.values())
print("list(a.values()) =>%s ## ValuesView반환후 리스트로 변환"%list(a.values()))
print("list(a.values())[1:3] =>%s  ##리스트로 반환 후 슬라이싱가능 \na.values() => TypeError: 'dict_values' object is not subscriptable  ## valuesView는 슬라이싱불가 "%list(a.values())[1:3])

print("\n2) items 키-밸류쌍을 반환")
print("a.items() =>%s ## set과 비슷한 itemsView를 반환"%a.items())
print("list(a.items()) =>%s ## itemsView를 튜플쌍이 들어있는 리스트 변환"%list(a.items()))
print("list(a.items())[1:3] =>%s  ##리스트로 반환 후 슬라이싱가능 \na.items() => TypeError: 'dict_items' object is not subscriptable  ## valuesView는 슬라이싱불가 "%list(a.items())[1:3])

## 키 존재여부확인
print("\n4. 키 존재여부확인")
print("list(a.keys()) =>%s "%list(a.keys()))
print("'name' in a => ",'name' in a)
print("'name' not in a => ",'name' not in a)
print("'nickname' in a => ",'nickname' in a)
print("'nickname' not in a => ",'nickname' not in a)
728x90

'프로그래밍 > 파이썬' 카테고리의 다른 글

[머신러닝] 단순선형회귀 분석  (0) 2021.11.29
[파이썬] 함수  (0) 2021.06.16
[파이썬] Set 셋  (0) 2021.06.15
[파이썬] 튜플 (Tuple)  (0) 2021.06.15
[파이썬] 리스트 List  (0) 2021.06.15