딕셔너리

- 키 : 밸류 형태

- pandas와 큰 연관

- 머신러닝 파라미터적용시 많이 사용

- 리스트와 같이 가장많이 쓰이는 집합자료형

 

생성

dict1 = {'국어':100, '수학':90, '영어':80}
print(dict1)
dict1['국어'] = 95
dict1['통계'] = 100
print(dict1)
k = dict1.pop('통계')
print(dict1)
print(k) # 밸류가 나온다
{'국어': 100, '수학': 90, '영어': 80}
{'국어': 95, '수학': 90, '영어': 80, '통계': 100}
{'국어': 95, '수학': 90, '영어': 80}
100

인덱싱은 key를 이용해서 가능하고 새로운 key:value도 인덱싱을 사용하여 삽입가능하다.

pop 또한 key를 이용하고 뽑아낸 원소는 value가 반환된다.

슬라이싱은 불가능하다.

 

물론 문자:숫자가 아닌 다른 경우도 가능하다

 

 

keys , values, items

print(list(dict1.keys()))
print(list(dict1.values()))
print(list(dict1.items()))
print(list(dict1.items())[0])
['국어', '수학', '영어']
[95, 90, 80]
[('국어', 95), ('수학', 90), ('영어', 80)]
('국어', 95)

keys 는 key들을 반환한다.

values 는 value들을  반환한다.

items 는 key,value를 튜플로 묶은 쌍들을 반환한다.

for key, value in dict1.items():
    print('{}점수는 {}점 입니다'.format(key,value))
국어점수는 95점 입니다
수학점수는 90점 입니다
영어점수는 80점 입니다

이런 식으로 응용가능하다.

 

추후 게시할 pandas에 행을 추가할 때 주로 딕셔너리를 이용하기 때문에 잘 알아아 둘 필요가 있다.

 

 

in

print('국어' in dict1)
print('과학' in dict1)
True
False

 

get

print(dict1['과학'])
---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
<ipython-input-32-1a2cdb189a8b> in <module>
----> 1 print(dict1['과학'])

KeyError: '과학'

일반 인덱싱을 이용하면 오류

print(dict1.get('과학'))
print(dict1.get('과학',0))
None
0

get을 이용하면 none 혹은 디폴트로 지정한 녀석을 반환한다.

 

이를 응용하면 카운트할 때 쉽다.

c_list = ['a','a','c','c','c','a','a','c','a','a','a','b','b','b','b']

count_dic = {}
for spel in c_list:
    count_dic[spel] = count_dic.get(spel, 0) + 1
print(count_dic)
{'a': 7, 'c': 4, 'b': 4}

물론 리스트의 count기능을 사용할 수 있지만 리스트의 길이 혹은 문자열의 길이가 셀수없이 길어진다면 모든 경우를 카운트하기에는 무리가 있다. 

 

'python 기초' 카테고리의 다른 글

[python기초] tqdm for문 예상속도, time  (0) 2021.12.06
[ python 기초 ] lambda, map, filter  (0) 2021.08.27
[ python 기초 ] 셋 set  (0) 2021.08.19
[ python 기초 ] 튜플 tuple  (0) 2021.08.19
[ python 기초 ] 리스트 list  (1) 2021.08.19

+ Recent posts