파이썬에서 데이터를 다루다 보면 딕셔너리(dict) 객체를 문자열(str)로 변환해야 하는 상황을 자주 마주하게 됩니다. 예를 들어 로그를 기록하거나, 화면에 출력하거나, 네트워크를 통해 데이터를 전송할 때가 대표적입니다. 이번 글에서는 딕셔너리를 문자열로 변환하는 두 가지 대표적인 방법을 예제와 함께 살펴보겠습니다.
1. str() 함수 사용하기
가장 간단하고 직관적인 방법은 str() 함수에 딕셔너리 객체를 인자로 전달하는 것입니다. type() 함수를 활용하면 변환 전후의 객체 타입을 쉽게 확인할 수 있습니다.
예제
DictA = {"Mon": "2 pm", "Wed": "9 am", "Fri": "11 am"}
print("주어진 딕셔너리 : \n", DictA)
print("변환 전 타입 : ", type(DictA))
# str() 함수로 변환
res = str(DictA)
# 결과 출력
print("문자열로 변환된 결과:\n", res)
print("결과의 타입 : ", type(res))실행 결과
위 코드를 실행하면 아래와 같은 결과가 출력됩니다.
주어진 딕셔너리 :
{'Mon': '2 pm', 'Wed': '9 am', 'Fri': '11 am'}
변환 전 타입 : <class 'dict'>
문자열로 변환된 결과:
{'Mon': '2 pm', 'Wed': '9 am', 'Fri': '11 am'}
결과의 타입 : <class 'str'>출력 결과만 보면 원래 딕셔너리와 동일해 보이지만, 실제로는 dict 타입에서 str 타입으로 완전히 바뀐 것을 확인할 수 있습니다.
2. json.dumps() 사용하기
두 번째 방법은 파이썬 표준 라이브러리인 json 모듈의 dumps() 메서드를 사용하는 것입니다. 이 메서드는 딕셔너리 객체를 직접 JSON 형식의 문자열로 변환해 줍니다.
예제
import json
DictA = {"Mon": "2 pm", "Wed": "9 am", "Fri": "11 am"}
print("주어진 딕셔너리 : \n", DictA)
print("변환 전 타입 : ", type(DictA))
# json.dumps()로 변환
res = json.dumps(DictA)
# 결과 출력
print("문자열로 변환된 결과:\n", res)
print("결과의 타입 : ", type(res))실행 결과
위 코드를 실행하면 아래와 같은 결과가 출력됩니다.
주어진 딕셔너리 :
{'Mon': '2 pm', 'Wed': '9 am', 'Fri': '11 am'}
변환 전 타입 : <class 'dict'>
문자열로 변환된 결과:
{"Mon": "2 pm", "Wed": "9 am", "Fri": "11 am"}
결과의 타입 : <class 'str'>str()과 json.dumps()의 차이점
두 방법 모두 결과물은 문자열이지만, 용도에 따라 선택 기준이 달라집니다.
- str(): 단순히 파이썬 객체를 사람이 읽기 좋은 형태의 문자열로 변환합니다. 딕셔너리 내부의 따옴표가 작은따옴표(')로 유지되므로, 표준 JSON 문법에는 맞지 않습니다.
- json.dumps(): 유효한(valid) JSON 형식의 문자열을 생성합니다. 모든 문자열 값이 큰따옴표(")로 감싸지므로, 파일 저장이나 REST API 통신 등 외부 시스템과 데이터를 주고받을 때 적합합니다.
따라서 단순 출력용이라면 str()로 충분하지만, 데이터 교환이나 저장 목적이라면 json.dumps()를 사용하는 것이 안전합니다. 또한 json.loads()를 사용하면 변환된 JSON 문자열을 다시 딕셔너리로 복원할 수 있으므로, 양방향 변환이 필요한 경우에도 json 모듈을 권장합니다.