Programming/Python
setdefault() - dictionary의 키 존재 상관없이
Chan_찬
2020. 9. 17. 10:14
반응형
setdefault()
dict타입의 키 존재 여부를 모른 채 접근할 수 있다A.setdefault(key, default)
collections.defaultdict
을 활용할 수 도 있다, 초기화시 default값을 넣어준다A = defaultdict(list)
@print_method
def usual_dict(dict_data):
""" dict[key]. """
newdata = {}
for k, v in dict_data:
if k in newdata:
newdata[k].append(v)
else:
newdata[k] = [v]
return newdata
@print_method
def setdefault_dict(dict_data):
""" setdefault() method. """
newdata = {}
for k, v in dict_data:
newdata.setdefault(k, []).append(v)
return newdata
@print_method
def defaultdict_dict(dict_data):
""" defaultdict() init. """
from collections import defaultdict
newdata = defaultdict(list)
for k, v in dict_data:
newdata[k].append(v)
return newdata
def test_setdef():
dict_data = [(f'k{i%2}',f'v{i}') for i in range(6)]
print(usual_dict(dict_data))
print(setdefault_dict(dict_data))
print(defaultdict_dict(dict_data))
test_setdef()
usual_dict: 0.0000
{'k0': ['v0', 'v2', 'v4'], 'k1': ['v1', 'v3', 'v5']}
setdefault_dict: 0.0000
{'k0': ['v0', 'v2', 'v4'], 'k1': ['v1', 'v3', 'v5']}
defaultdict_dict: 0.0000
defaultdict(<class 'list'>, {'k0': ['v0', 'v2', 'v4'], 'k1': ['v1', 'v3', 'v5']})
defaultdict 은 아래에서도 다루었다
Array(list)의 원소 개수 카운팅
728x90
반응형
BIG