본문 바로가기

programming/python

파이썬 딕셔너리 get(), setdefault()

파이썬 딕셔너리 get(), setdefault() 

'깔끔한 파이썬 탄탄한 백엔드'라는 책을 보다가 setdefault() 가 어떤 기능인지 궁금해서 찾아보았다. 

 

책에서는 간단한 트위터 기능을 구현하는 예제에 나와 있는데,

특정 id(user 고유의 값)를 팔로우하거나 언팔로우할 때 해당 id가 중복되면 안 되기 때문에 setdefault() 를 사용한다고 했다. 

리스트를 사용하면, 값이 중복되더라도 추가가되기 때문에 중복을 허용하지 않는 set을 사용한다.

그러면 어렵게  값을 재확인 할 필요가 없어진다 :) 

 

단, 주의해야 하는 점이 있는데, set을사용한 후 return 을 할 때 json 형태로 하게 되면, 에러가 난다. 

이러한 경우 리스트 형태로 변환해서 바꾸어 주어야 한다. 

책에서는 문제를 해결하기 위해 커스텀 JSON 인코더를 통해 set 을 list 로 변경해준다. (코드는 아래에서 확인 가능)

https://github.com/rampart81/python-backend-book/blob/master/chapter5/app.py

 

 

파이썬 딕셔너리 get(), setdefault()  만들어본 예제

 

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# dict get()
 
# 딕셔너리를 하나 만든다.
pre_char_dict = {} 
 
 
# 키, 값을 넣는다.
pre_char_dict['a'= 'apple'
pre_char_dict['b'= 'banana'
pre_char_dict['c'= 'candy'
 
 
# get()
# pre_char_dict 에 없는 키 'd'
print(pre_char_dict.get('d')) #  None
print(pre_char_dict.get('d''ddd')) # ddd 
 
print(pre_char_dict)
#  ^ {'a': 'apple', 'b': 'banana', 'c': 'candy'} 기존 그대로. 키,값이 추가되지 않음
 
print(pre_char_dict.get('a')) # apple
print(pre_char_dict.get('a''aaa')) # apple 출력. 값이 바뀌지 않는다.
 
 
# setdefault()
# pre_char_dict 에 없는 키 'e'
pre_char_dict.setdefault('e''engel')
 
print(pre_char_dict)
# ^ {'a': 'apple', 'b': 'banana', 'c': 'candy', 'e': 'engel'} 키, 값 추가. 
 
 
pre_char_dict.setdefault('a''ant'# 키 a = apple 에서 ant 로 바뀔까?
 
print(pre_char_dict) 
# ^ {'a': 'apple', 'b': 'banana', 'c': 'candy', 'e': 'engel'} 기존 값은 변화지 않는다.
 
 
# dic setdefault set() add
pre_char_dict.setdefault('f', set())
 
print(pre_char_dict) 
# ^ {'a': 'apple', 'b': 'banana', 'c': 'candy', 'e': 'engel', 'f': set()}
 
 
pre_char_dict.setdefault('f', set()).add(5)
 
print(pre_char_dict) 
# ^ {'a': 'apple', 'b': 'banana', 'c': 'candy', 'e': 'engel', 'f': {5}}
 
 
pre_char_dict.setdefault('f', set()).add(10)
 
print(pre_char_dict) 
# ^ {'a': 'apple', 'b': 'banana', 'c': 'candy', 'e': 'engel', 'f': {10, 5}}
 
pre_char_dict.setdefault('f', set()).discard(5
 
print(pre_char_dict)
# ^ {'a': 'apple', 'b': 'banana', 'c': 'candy', 'e': 'engel', 'f': {10}}
 
 
 
 
cs
 

 

도움 받은 사이트 : https://dongdongfather.tistory.com/68

 

[파이썬 기초] 딕셔너리 값 가져오기 get(), setdefault()

파이썬 딕셔너리에서 키에 해당하는 값을 가져오려고 하면 주로 아래와 같이 사용한다. >>> week_dict = dict() >>> week_dict['Mon'] = '맑음' >>> week_dict['Tue'] = '구름' >>> week_dict['Sun'] = '비' >>> w..

dongdongfather.tistory.com

 

'programming > python' 카테고리의 다른 글

파이썬 딕셔너리 value + ()  (0) 2019.06.11
파이썬 getattr() 함수  (0) 2019.06.05
파이썬 들여쓰기와 return  (0) 2019.06.04
파이썬 모듈 사용  (0) 2019.05.16
miniconda 설치 후 conda 명령어 안 먹힐 때  (0) 2019.05.14