wasup

Python) 파이썬 자료형 딕셔너리 (dict {}) 본문

IT/Python

Python) 파이썬 자료형 딕셔너리 (dict {})

wasupup 2021. 5. 22. 18:32
반응형

Tip 도움말 구하기!

#자료형, 함수 등의 도움말!
#1. 변수명?, ?변수명, hel()
#2. type()함수
#3. dir()함수

2. 파이썬 자료형

2-1. 숫자형 : int/float/complex
2-2. 문자형 : str
2-3. 리스트 : list []
2-4. 튜플 : tuple ()
2-5. 딕셔너리 : dict {}
2-6. 셋 : set {}

 


2-5. 파이썬 딕셔너리 : dict {}

 

중괄호로 선언, key와 value을 한 쌍으로 갖는 자료형
Java에서 map과 동일한 유형
key는 중복 불가 value는 중복가능
key값은 mutable한 자료형은 올 수 없다.
즉, 수정할 수 있는 자료형은 key로 정의 불가.

 

 

a = {}
print(type(a), type({}))
print(dir(a))

<class 'dict'> <class 'dict'>

['__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'clear', 'copy', 'fromkeys', 'get', 'items', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values']

 

 

a = {1:5, 2:100}
b = {(1, 2):'값1', '문자':'값2'}
#c = {[1, 2]:'값3'} #변경가능한 자료는 key로 불가
d = {1.5:'값4', 3.15:'PI'}
e = {True:'값5', False:'값6'}
print(a, b, d, e)
print(type(a), type(b), type(d), type(e))

{1: 5, 2: 100} {(1, 2): '값1', '문자': '값2'} {1.5: '값4', 3.15: 'PI'} {True: '값5', False: '값6'}

<class 'dict'> <class 'dict'> <class 'dict'> <class 'dict'>

 

 

 

#key중복불가. 하지만 에러는 안남.
a = {'k':100, 'y':200, 'k':1000}
print(a)

{'k': 1000, 'y': 200}

 

 

a = {1} 
b = {1, 2, 3, 4, 5}
print(type(a)) #값이 하나면 set
print(type(b))

<class 'set'>

<class 'set'>

 

 

 

접근하기1

#접근하기
a = {1:90, 2:80, 3:98}
print(a[1]) #dick 1은 index가 아니라 key
print(a[1],a[2],a[3])

90

90 80 98

 

 

 

접근하기2

b = {'name':'진주', 'age':12}
print(b)
print(b['name'], b['age'])

{'name': '진주', 'age': 12}

진주 12

 

 

추가, 수정

b['addr'] = '송도'
print(b)
b['addr']='서울'
print(b)

{'name': '진주', 'age': 12, 'addr': '송도'}

{'name': '진주', 'age': 12, 'addr': '서울'}

 

 

b['func'] = print
print(b)

{'name': '진주', 'age': 12, 'addr': '서울', 'func': <built-in function print>}

 

 

 

관련함수

#관련함수
grade = {'홍길동':90, '홍길일':85, '홍진주':100}
print(grade.keys())
print(grade.values())
print(grade.items())

dict_keys(['홍길동', '홍길일', '홍진주'])

dict_values([90, 85, 100])

dict_items([('홍길동', 90), ('홍길일', 85), ('홍진주', 100)])

 

 

 

값이 없다면?

print(grade.get('홍진주'))
print(grade.get('홍진아')) #값이 없으면 None
#print(grade.('홍진아')) #예외발생

100

None

 

 

in

print('홍진주' in grade)
print('홍진아' in grade)

True

False


2-6. 파이썬 셋 : set {}

 

중복허용불가, 순서없음
set의 선언은 중괄호로 한다.()
집합관련연산

 

 

 

s1 = {1}
s2 = {1, 2, 3}
print(type(s1), type(s2))
print(dir(s1))

<class 'set'> <class 'set'>

['__and__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__iand__', '__init__', '__init_subclass__', '__ior__', '__isub__', '__iter__', '__ixor__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__or__', '__rand__', '__reduce__', '__reduce_ex__', '__repr__', '__ror__', '__rsub__', '__rxor__', '__setattr__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__xor__', 'add', 'clear', 'copy', 'difference', 'difference_update', 'discard', 'intersection', 'intersection_update', 'isdisjoint', 'issubset', 'issuperset', 'pop', 'remove', 'symmetric_difference', 'symmetric_difference_update', 'union', 'update']


 

반응형
Comments