파이썬으로 딕셔너리 데이터를 생성할 때 일반적으로 키 속성은 따옴표로 감싸서 지정해줘야 합니다.

dict(a: 1, b: 2, c: 3) # SyntaxError: invalid syntax

dict('a': 1, 'b': 2, 'c': 3) # Success

그러나 매번 따옴표로 키 속성을 지정해주는게 굉장히 불편합니다.

그래서 따옴표로 키 속성을 지정해주지 않아도 딕셔너리 데이터를 생성할 수 있는 방법에 대해 알아보겠습니다.

Keyword Argument

함수의 키워드 인자( Keyword Argument )를 이용하여 함수의 인자와 값으로 딕셔너리를 생성합니다.

def makedict(**kwargs):
    return kwargs

print(makedict(a=1, b=2, c=3))
# 결과: {'a': 1, 'b': 2, 'c': 3}

그리고 딕셔너리를 생성하는것 뿐만이 아닌 별도의 처리가 필요하다면 간결함을 포기하고 아래 처럼 작성하는 방법도 있습니다.

def dodict(*args, **kwds):
    d = {}
    for k, v in args:
        d[k] = v
    d.update(kwds)
    return d

data = {'e': 4, 'f': 5, 'g': 6}
print(dodict(a=1, b=2, c=3, *data.items()))

# 결과: {'e': 4, 'f': 5, 'g': 6, 'a': 1, 'b': 2, 'c': 3}

위 코드는 함수의 *args 에는 *data.items() 값이 tuple 형태로 전달되어 딕셔너리 데이터로 변환되고, 그다음으로 **kwds 의 key,value 값을 update 메소드를 이용해 업데이트 처리를 하는 코드입니다.

내장 함수 ( dict )

위 처럼 별도의 함수를 만들어서 생성 해도 되지만 파이썬의 내장 함수(dict)가 이미 제공되고있으므로 별도의 처리를 필요하지 않다면 내장 함수를 사용하는 방법을 권장드립니다.

print(dict(a=1, b=2, c=3))

# 결과: {'a': 1, 'b': 2, 'c': 3}

결론

지금까지 설명드린 방법은 일반적인 딕셔너리를 생성 문법 형태가 불편한 경우에 좀 더 쉽게 생성하기 위한 방법입니다. ( 데이터가 많은 경우 일일이 키 속성마다 따옴표를 붙여줘야 하므로 )

앞으로는 딕셔너리 생성시 매번 키 속성마다 따옴표를 붙이지 말고 위 방법도 활용해보시길 추천드립니다.

감사합니다.