리스트(list)는 '각 요소를 인덱스 기반으로 순서가 있게 저장하는 데이터 형태'다.
딕셔너리(dictonary)는 '키(key)를 기반으로 값(value) 저장하는 데이터 형태'다.
{
"key_A':10, #문자열을 Key로 사용
"Key_B':20,
1:40,#숫자를 Key로 사용
False:50#부울 값을 키로 사용
}
딕셔너리 선언하기
딕셔너리는 중괄호({})로 선언하며, key:value 형태로 한 요소가 생성되며 쉼표(,)로 key:valeu 쌍을 구분한다. 그리고 빈(empty) 리스트 형 데이터를 선언했던 것과 유사하게 빈(emtpy) 딕셔너리 형 데이터를 선언할 수 있다.
empty_list = []
empty_dic = {}
a_dic = {
'name':'이재영',
'address': '경상북도 안동시',
'age': 23
}
- 딕셔너리 요소(key:value)에 접근하기
키(key), 'name'에 해당하는 값(value)에 접근하려고 한다. 리스트(list)에서는 리스트 이름 뒤에 여는 대괄호([)와 닫는 대괄호(])를 쓰고 그 사이에 인덱스 숫자를 써서 특정 요소에 접근했었다. 딕셔너리에서 특정 요소에 접근하기 위해서는 리스트와 마찬가지로 딕셔너리 이름 뒤에 여는 대괄호([)와 닫는 대괄호(])를 쓰고 그 사이에 인덱스가 아니라 키(key)를 써서 해당 요소에 접근한다.
리스트 형 테이터가 각 요소로 다양한 데이터 형을 가질 수 있듯이 딕셔너리에서 값(key:value)도 다양한 형의 데이터를 가질 수 있다.
persion = {
'name':'이재영',
'address': '경상북도 안동시',
'age': 23,
'car': ['붕붕이', '쌩쌩이']
}
cars = persion['car']
print( cars )
print( cars[0] )
print( cars[1] )
['붕붕이', '쌩쌩이'] 붕붕이 쌩쌩이
my_dic에서는 boy를 어떻게 설명하는지 찾아 보겠다.
my_dic = {
'boy': ['소년', '남자 아이', '(어린)아들'],
'girl': ['소녀', '여자 아이', '딸'],
'computer': {
'cpu': '중앙처리장치',
'memory':'기억장치'
}
}
print( my_dic['boy'] )
['소년', '남자 아이', '(어린)아들']
mean = my_dic['boy']
print( mean[0] )
print( mean[1] )
print( mean[2] )
print('--- 구분선 ---')
for element in mean:
print(element)
print('--- 구분선 ---')
for explanation in my_dic['boy']:
print(explanation)
소년 남자 아이 (어린)아들 --- 구분선 --- 소년 남자 아이 (어린)아들 --- 구분선 --- 소년 남자 아이 (어린)아들
'computer'라는 단어에 대해서도 설명(value)을 달았는데, 설명이 사전(dictonary)이다. 사전 안에 사전을 넣었다.
mean_of_computer = my_dic['computer']
print(mean_of_computer)
{'cpu': '중앙처리장치', 'memory': '기억장치'}
print( mean_of_computer['cpu'] )
print( mean_of_computer['memory'] )
중앙처리장치 기억장치
print( my_dic['computer']['cpu'] )
print( my_dic['computer']['memory'] )
중앙처리장치 기억장치
딕셔너리에 값 추가하기/제거하기
딕셔너리에 값(value)을 추가할 때는 키(key)와 함께 저장해야 한다.
딕셔너리_이름[새로운_키]= 새로운_값
my_dic = {
'boy': ['소년', '남자 아이', '(어린)아들'],
'girl': ['소녀', '여자 아이', '딸'],
'computer': {
'cpu': '중앙처리장치',
'memory':'기억장치'
}
}
my_dic['AI'] = 'artificial intelligence'
print(my_dic)
{'boy': ['소년', '남자 아이', '(어린)아들'], 'girl': ['소녀', '여자 아이', '딸'], 'computer': {'cpu': '중앙처리장치', 'memory': '기억장치'}, 'AI': 'artificial intelligence'}
my_dic에 새로운 요소('AI':'artificial intelligence')가 추가된 것을 확인 했다
my_dic = {
'boy': ['소년', '남자 아이', '(어린)아들'],
'girl': ['소녀', '여자 아이', '딸'],
'computer': {
'cpu': '중앙처리장치',
'memory':'기억장치'
},
'AI':'artificial intelligence'
}
my_dic['boy'].append('(특정한 일을 하는)남자[소년]')
print(my_dic['boy'])
['소년', '남자 아이', '(어린)아들', '(특정한 일을 하는)남자[소년]']
딕셔너리에서 특정 요소(key:value)를 삭제해보겠다.
my_dic = {
'boy': ['소년', '남자 아이', '(어린)아들'],
'girl': ['소녀', '여자 아이', '딸'],
'computer': {
'cpu': '중앙처리장치',
'memory':'기억장치'
},
'AI':'artificial intelligence'
}
print( my_dic ) # before
del my_dic['computer']['memory']
print( my_dic ) # after
{'boy': ['소년', '남자 아이', '(어린)아들'], 'girl': ['소녀', '여자 아이', '딸'], 'computer': {'cpu': '중앙처리장치', 'memory': '기억장치'}, 'AI': 'artificial intelligence'} {'boy': ['소년', '남자 아이', '(어린)아들'], 'girl': ['소녀', '여자 아이', '딸'], 'computer': {'cpu': '중앙처리장치'}, 'AI': 'artificial intelligence'}
- 딕셔너리 내부에 키(key)가 있는지 확인하기
딕셔너리에 없는 키(key)로 접근하면 에러가 난다. 그래서 해당 딕셔너리 형 데이터에 특정 키(key)가 존재하는지 확인 할 수 있는 기능이 있다.
in 키워드
리스트 형 테이터 내부에 특정 요소(값)이 있는지 확인하기 위해 in 키워드를 사용했었다. 딕녀서리 형 데이터 내부에 특정 키로 접근이 가능한지를 확인하기 위해 in 키워드를 사용할 수 있다.
dic = {
'name':'김성필',
'age': 25,
'address':'경기도 화성시 동탄'
}
key = 'income'
if key in dic:
print(dic[key])
else:
print('존재하지 않은 key에 접근하고 있습니다.')
존재하지 않은 key에 접근하고 있습니다.
get() 함수
위 코드 셀에서 None이라는 키워드가 보이는데 None은 '없다'라는 의미를 갖는다. get()에 전달한 key에 대한 값이 있다면 get()는 전달 받은 key에 대한 값(value)를 반환한다.
dic = {
'name':'김성필',
'age': 25,
'address':'경기도 화성시 동탄'
}
key = 'name'
value_for_key = dic.get(key)
if value_for_key == None:
print('존재하지 않은 key에 접근하고 있습니다.')
else:
print(value_for_key)
김성필
get()함수는 존재 하지 않는 키(key)로 접근했을 때 KeyError를 발생시키지 않고 None값을 반환한다.
◃참고▹
a **if** condition **else** b
위 코드는 다음과 같이 동작한다. 먼저 if문이 실행되어 condition을 따진다. condition이 참(True)면 a를 선택하고 그렇지 않으면(조건이 거짓이면) b가 선택된다.
a = 1
b = 2
x = a if a > b else b
print(x)
a = 2
b = 1
x = a if a > b else b
print(x)
2 2
dic = {
'name':'이재영',
'age': 25,
'address':'경상북도 안동시'
}
key = 'name'
value = dic.get(key)
print(value if value != None else "존재하지 않는 key에 접근하고 있습니다.")
이재영
for 반복문: 딕셔너리와 함께 사용하기
딕셔너리의 각 요소에 어떤 처리를 하기 위해 딕셔너리와 for문을 조합하여 활용하는 방법을 알아보겠다.
for somethingin dictonary_type_data:
#code
위 코드에서 dictonary_type_data는 딕셔너리 형 데이터를 의미한다. `something'은 어떤 값이 들어갈까? 다시 말해, key가 할당 될까? value가 할당될까?
lst = [1, 'a', 2, 'b']
for elementin lst:
#code
위 코드에서 element에는 lst의 요소(값)이 할당될 것이다. 그렇다면 something에는 키(key)가? 아니면 값(value)가? 아니면 key:value 형태의 데이터가 들어갈까?
dictonary_type_data = {
'name':'이재영',
'age': 25,
'address':'경상북도 안동시'
}
for something in dictonary_type_data:
print(something)
name age address
my_info = {
'name':'이재영',
'age': 25,
'address':'경상북도 안동시'
}
for key in my_info:
print(key, ":", my_info[key])
name : 이재영 age : 25 address : 경상북도 안동시
'빅데이터 분석가 양성과정 > Python' 카테고리의 다른 글
Ch04-4 반복문 / 문자열, 리스트, 딕셔너리 (3) | 2024.07.05 |
---|---|
CH04-3 반복문 / 범위 자료형과 while 반복문 (0) | 2024.07.05 |
Ch04-1 반복문 / 리스트와 반복문 (0) | 2024.07.04 |
Ch 03-2 조건문 / if ~else 와 elif 구문 (0) | 2024.07.04 |
Ch 03-1 조건문 / 불 자료형과 if 조건문 (0) | 2024.07.04 |