본문 바로가기
Programming/Python

setdefault() - dictionary의 키 존재 상관없이

by Chan_찬 2020. 9. 17.
728x90
반응형

python - setdefault

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
728x90
BIG

'Programming > Python' 카테고리의 다른 글

package - 패키지  (0) 2020.09.21
module - 모듈  (0) 2020.09.18
Reverse list - 리스트 역순으로  (0) 2020.09.16
list method 성능 측정  (0) 2020.09.15
Index(), bisect() - list 원소의 index값 찾기  (0) 2020.09.14
Buy me a coffeeBuy me a coffee

댓글