티스토리 뷰



01. 딕셔너리 자료형

▶딕셔너리 자료형의 형태
{ Key1 : Value1 , Key 2: Value2 , Key3 : Value3}
▶연관 배열 (Associative array) , 해시(Hash)라고도 불림

▶리스트(index사용)와 다른점
→ 순차적으로 구성되어 있지않음
→ key와 value로 묶여있음
→ 딕셔너리는 key의 값으로 이용 값에 접근

▶딕셔너리 안에서 key의 값은 유일한 값이 되어야함
→ 같은 값이 있으면 오류가 남

▶소스가 길어져도 key를 이용하여 가져올 수 있는 방법이 편리함

(딕셔너리의key를 이용하여 자료 뽑아내는 예시)
>>> e
{'name': 'cho', 'address': 'Seoul'}
>>> e["address"]
'Seoul'
>>> e["name"]
'cho'
>>>

▷key 의 값 → 문자와 정수 값 사용 가능
▷Value의 값 →여러가지 다 들어갈 수 있음

                (딕셔너리, 리스트, 정수, 문자)


>>> a={'test':'asdfadfad'}
>>> a
{'test': 'asdfadfad'}
>>> type(a)
<class 'dict'>  -- type값 dict표현
>>>


★딕셔너리 자료형 예제


☆딕셔너리 예제 풀이


>>> a = {"name": "Python", " phone":"01199993323", "age":"28" , "address":"서울시 강남구","hobby": ["게임","독서","야구","축구"]}
>>> a
{'name': 'Python', ' phone': '01199993323', 'age': '28', 'address': '서울시 강남구', 'hobby': ['게임', '독서', '야구', '축구']}
>>>


※ 변수이름 만들기

→ 실제 프로그래밍에서는 신중히 정해야함

(변수가 가지고 있는 내용을 추측학 수 있는 것으로 해야함)


01-1. 딕셔너리 요소 추가


▶딕셔너리 요소 추가 형태

a[Key_Value] = Value

※주의 : Key_Value는 index가 아님

▶ 데이터의 추가 기준은 key

(다른점 : 리스는는 index)


>>> e={}
>>> type(e)
<class 'dict'> -- type dictionary표현
>>>
>>> e['name']='cho'
>>> e
{'name': 'cho'}
>>> e[0]=123       --- 리스트와 구분해서 사용하기

                               리스트는 index로 자리값에 해당 값을 넣음
>>> e
{'name': 'cho', 0: 123}
>>> >>>
>>> e['address']="Seoul"
>>> e
{'name': 'cho', 0: 123, 'address': 'Seoul'} --순서 상관없음


-------요소 추가 연습

>>> e={}
>>> e['name']='cho'
>>> e['address']="Seoul"
>>> e
{'name': 'cho', 'address': 'Seoul'}
>>> e["name"]
'cho'
>>> type(e["name"])     --- type str(문자열)
<class 'str'>
>>>


>>> e[1]              -----1이라는 key는 없기때문에 에러가 남
Traceback (most recent call last):
  File "<pyshell#52>", line 1, in <module>
    e[1]
KeyError: 1
>>>


01-2. 딕셔너리 요소 삭제


▶딕셔너리 요소 삭제 형태

del a[Key_Value]

※ Key_Value 가 존재하지 않으면 오류가 발생

>>> e
{'name': 'cho', 'address': 'Seoul', 0: 123}
>>> del e[0]
>>> e
{'name': 'cho', 'address': 'Seoul'}
>>> del e["name"]
>>> e
{'address': 'Seoul'}
>>> del e["address"]
>>> e
{}
>>>


→ 순서가 없는 자료형임으로 key만 가지고 데이터를 가져올 수 있는 함수 필요


01-3. 딕셔너리의 활용


▶ 딕셔너리는 하나의 변수에 관련된 정보를 모아서 관리

(저장된 값을 하나로 관리 할 수 있음)


⊙ json정보전달에 유용한 형태 (json.org)

→ 딕셔너리의 형태로 사용됨


※ 한줄이 아닌 여러줄로 대칭적으로 쓰면 자료의 구조가 눈에 잘 보임


>>> e={}

>>> e["name"]="cho"
>>> e["age"]=22
>>> e["address"]="seoul"
>>> e
{'name': 'cho', 'age': 22, 'address': 'seoul'}


>>> e["nane"]      ---오류남 없는 key
Traceback (most recent call last):
  File "<pyshell#89>", line 1, in <module>
    e["nane"]
KeyError: 'nane'
>>>


01-4. 딕셔너리 연산


▶key와 Value 추출


>>> e
{'name': 'cho', 'age': 22, 'address': 'seoul'}

>>> e.keys()          ---- key만 추출
dict_keys(['name', 'age', 'address'])
>>> type(e.keys())
<class 'dict_keys'>
>>> list(e.keys())    --- list
['name', 'age', 'address']
>>> f=list(e.keys())   --- list로 만들어서 사용
>>> f
['name', 'age', 'address']
>>> e[f[0]]            -- index
'cho'
>>> e[f[1]]
22
>>> e[f[2]]
'seoul'
>>>

>>> e.values()      --value 추출
dict_values(['cho', 22, 'seoul'])
>>>


▶key를 통해서 Value 가져올 수 있음


>>> e

{‘Cho': {'name': 'Cho', 'addr': 'seoul', 'age': 40}, 'Park': {'name': 'Park', 'addr': 'busan', 'age': 32}}

>>> e.get('Cho’)

{‘name’: ‘Cho’, ‘addr’: ‘seoul’, ‘age’: 40}

>>> e.get('Park')

{'name': 'Park', 'addr': 'busan', 'age': 32}

>>> e.get('PARK')  --Key 가 존재하지 않는 경우라도 오류가 발생하지 않음

>>> e.get('PARK', 'DEFAULT')   --Key 가 존재하지 않는 경우 , 두번쨰 인자를 반환.

'DEFAULT'


▶key가 존재하는지 조사


>>> member

{‘Cho': {'name': 'Cho', 'addr': 'seoul', 'age': 40}, 'Park': {'name': 'Park', 'addr': 'busan', 'age': 32}}

>>> 'Cho’ in member

True

>>> ‘PARK’ in member

False

>>> 'Cho' not in member

False

>>> 'Park' not in member

False

>>>


→단독으로 쓰는 것은 큰 의미가 없고 주로 판단할 때 쓰임


★딕셔너리 연습 예제

☆예제 풀이


>>> d={"cho":{"영어":87,"국어":57,"수학":86},"Kim":{"영어":94,"국어":69,"수학":78},"Lee":{"영어":96,"국어":77,"수학":95},"Park":{"영어":86,"국어":76,"수학":"99"}}


>>> d={"cho":{"영어":87,"국어":57,"수학":86}}
>>> d["cho"]
{'영어': 87, '국어': 57, '수학': 86}
>>> d["kim"]={"영어":94,"국어":69,"수학":78} -- kim 요소 추가
>>> d
{'cho': {'영어': 87, '국어': 57, '수학': 86}, 'kim': {'영어': 94, '국어': 69, '수학': 78}}

>>> d["lee"]={"영어":96,"국어":77,"수학":95} -- lee 요소 추가
>>> d
{'cho': {'영어': 87, '국어': 57, '수학': 86}, 'kim': {'영어': 94, '국어': 69, '수학': 78}, 'lee': {'영어': 96, '국어': 77, '수학': 95}}
>>> d["Park"]={"영어":86,"국어":76,"수학":"99"} -- park 요소 추가
>>> d
{'cho': {'영어': 87, '국어': 57, '수학': 86}, 'kim': {'영어': 94, '국어': 69, '수학': 78}, 'lee': {'영어': 96, '국어': 77, '수학': 95}, 'Park': {'영어': 86, '국어': 76, '수학': '99'}}
>>>




02. 집합 자료형


▶ 순서가 없음

→ 순서가 없기 때문에  index 접근이 불가

▶ 중복이 허락되지 않음

▶ 집합 자료형 형태

a = set()

>>> a=set([1,2,3,4,1,2])
>>> a
{1, 2, 3, 4}
>>> type(a)
<class 'set'> -- type set
>>>


▶ 중복되는 요소가 있는 경우 하나만 남기고 제거


>>> b=set("Hello World")
>>> b
{'r', 'd', ' ', 'o', 'W', 'H', 'e', 'l'} -- 중복되는 l ,o 제거
>>>


>>> c=set(["Hello","World","!","!"])
>>> c
{'World', 'Hello', '!'}  -- 중복되는  ! 제거
>>>



02-1. 집합 자료형의 요소 추가


▶ 단일 요소 추가의 형태

변수.add( x )


>>> c.add("You")
>>> c
{'World', 'Hello', '!', 'You'}


똑같은 값을 집어넣으면 중복되기 때문에 추가 안됨


>>> c
{'World', 'Hello', '!', 'You'}

>>> c.add("Hello")
>>> c
{'World', 'Hello', '!', 'You'}
>>>


▶여러개의 요소 추가 형태

변수.update( x )


>>> c
{'World', 'Hello', '!', 'You'}

>>> c.update(["i","He","She"])
>>> c
{'Hello', '!', 'You', 'He', 'World', 'i', 'She'}
>>>



02-2. 집합 자료형의 요소 삭제


▶ 요소 삭제 형태 

변수.remove( x )


>>> c.remove("You")
>>> c
{'Hello', '!', 'He', 'World', 'i', 'She'}
>>> c.remove("i")
>>> c
{'Hello', '!', 'He', 'World', 'She'}
>>>


▶ 전체 삭제 형태

del


>>> del c    --c의 모든 자료가 다 삭제됨
>>> c        -- 모든 자료가 삭제되었기 때문에 오류남
Traceback (most recent call last):
  File "<pyshell#141>", line 1, in <module>
    c
NameError: name 'c' is not defined
>>>


02-3. 집합 자료형의 리스트화


▶ 집합 자료형은 순서가 없고 중복되지 않음

→index로 접근 불가


>>> b
{'r', 'd', 'a ', 'o', 'W', 'H', 'e', 'l'}
>>> b[0]  -순서가 없기때문에 인덱스로 접근 불가

                 오류가 남
Traceback (most recent call last):
  File "<pyshell#146>", line 1, in <module>
    b[0]        
TypeError: 'set' object does not support indexing



▶ 리스트로 접근


>>> b
{'r', 'd', 'a ', 'o', 'W', 'H', 'e', 'l'}

>>> e=list(b)
>>> e
['r', 'd', 'a ', 'o', 'W', 'H', 'e', 'l']
>>> e[0]
'r'
>>> e[1]
'd'
>>> e[2]
'a '


02-4. 집합 자료형의 연산


▶집합자료형은 집합이므로

 교집합,차집합,합집합이 가능하다.

▶교집합

a+b

a.intersection(b)


>>> a=set([1,2,4,5,6])
>>> b=set([2,4,3,5,7])
>>> a&b
{2, 4, 5}
>>> a.intersection(b)
{2, 4, 5}


▶차집합

a-b

a.difference(b)


>>> a=set([1,2,4,5,6])
>>> b=set([2,4,3,5,7])

>>> a-b
{1, 6}
>>> a.difference(b)
{1, 6}
>>>


▶합집합

a | b

a.union(b)

>>> a=set([1,2,4,5,6])
>>> b=set([2,4,3,5,7])

>>> a|b
{1, 2, 3, 4, 5, 6, 7}
>>> a.union(b)
{1, 2, 3, 4, 5, 6, 7}


집합 자료형의 연산 예제



☆예제 풀이


>>> a=set(["cho","park","lee","kim"])
>>> b=set(["kim","lee","cha","na","won"])

>>> a&b
{'lee', 'kim'}


>>> a|b
{'lee', 'park', 'won', 'na', 'cha', 'cho', 'kim'}

>>> a-b
{'park', 'cho'}
>>> b-a
{'won', 'na', 'cha'}
>>>



공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함