코딩테스트 공부/Python

파이썬) 딕셔너리에 대해 알아보자

Stat_in_KNU 2020. 5. 30. 17:50

Python을 하다보니 어느 순간부터 자꾸 리스트로만 문제를 해결하려고 하는 습

성이 생겼다. 그만큼 리스트는 잘 다루게 되었지만 한계점이 분명히 있는 자료형이니...

 

특히 Hash로 풀 수 있는 문제들이 많기때문에 딕셔너리에 대해서 자세히 알아보자!

 

1. 딕셔너리에 Key-Value 쌍 추가하기

- setdefault() : key-value 쌍 추가

- update() : key-value 쌍 추가 및 수정

 

2. 딕셔너리에 키와 기본값 저장하기

x = {'a':10, 'b':20, 'c':30, 'd':40}
x.sedefault('e')

 

결과 : 

 

x = {'a':10, 'b':20, 'c':30, 'd':40}
x.sedefault('f', 100)

결과 :

3. 딕셔너리의 value 수정하기

 

x.update(e = 100)
x.update(g = 123) #key가 없으면 key = value 그대로 추가
x.update(a = 11, b= 22) #콤마로 구분해서 여러개도 가능

y = {1: 'one', 2: 'two'}
y.update({1: 'ONE', 2: 'TWO'}) #key가 문자가 아닌 숫자일 경우에는 update(딕셔너리) 형태로 update
y.update([[2, 'TWO'], [4, 'FOUR']]) #list나 tuple로도 가능
y.update(zip([1,2], ['one','two'])) #zip도 가능

 

4. 딕셔너리에서 key-value 제거하기

x = {'a': 10, 'b': 20, 'c': 30, 'd': 40}
x.pop('a') #key를 제거하면 value도 같이
del x['b'] #return None

x = {'a': 10, 'b': 20, 'c': 30, 'd': 40}
x.popitem() #제일 뒤에있는 key-value 쌍이 pop됨

x.clear() #딕셔너리 초기화

 

5. 딕셔너리에서 value 가져오기

 

x = {'a': 10, 'b': 20, 'c': 30, 'd': 40}
x.get('a') #방법 1 / 없을때 return None	
x['a'] #방법 2 / 없을때 오류발생

x.get('z') ;x.get('z', 0 ) #None 반환 / 0 반환 하게 만들 수 있음

 

6. key, value, key-value 가져오기

 

x = {'a': 10, 'b': 20, 'c': 30, 'd': 40}
x.keys() #key 반환
x.values() #value 반환
x.items() #key-value 쌍 반환

 

7. list와 tuple로 딕셔너리 만들기

keys = ['a','b','c','d']
values = [1,2,3,4,]
x = dict.fromkeys(keys, values)
x
#{'a': [1, 2, 3, 4], 'b': [1, 2, 3, 4], 'c': [1, 2, 3, 4], 'd': [1, 2, 3, 4]}


my_dict = dict(zip(keys, values))
my_dict
#{'a': 1, 'b': 2, 'c': 3, 'd': 4}

 

8. maria라는 학생의 시험 성적 dictionary가 주어졌을때 시험 성적의 평균을 구하라..

maria = {'korean': 94, 'english': 91, 'mathematics': 89, 'science': 83}
sum([val[1] for val in maria.items()])/len(maria)
sum(maria.values())/len(maria)

 

**9. 딕셔너리 정렬**

 

key = ['b','c','a']
value = [3,2,1,]
my_dict = dict(zip(key, value))
my_dict
#{'b': 3, 'c': 2, 'a': 1}

# key에 따라 정렬
my_dict_bykey = dict(sorted(my_dict.items(), key = lambda key: key[0]))
my_dict_bykey
#my_dict_bykey

# value에 따라 정렬
my_dict_byval = dict(sorted(my_dict.items(), key = lambda key: key[1]))
my_dict_byval
#{'a': 1, 'c': 2, 'b': 3}