파이썬 딕셔너리(Python Dictionary)를 활용한 데이터 처리 방법
개발 테크
2024. 06. 23
조회수
3,754

파이썬(Python)에서 데이터를 관리할 때, 리스트를 사용하면 원하는 값을 찾기 위해 저장된 모든 값을 순서대로 하나씩 확인해야 하는 불편함이 있습니다. 

이런 경우, 데이터를 이름으로 바로 찾을 수 있다면 더 빠르고 효율적으로 처리할 수 있는데요. 그럴 때 사용하기 좋은 게 바로 ‘파이썬 딕셔너리(Python dictionary)’입니다. 

파이썬 딕셔너리(Python dictionary)는 Key-value 쌍을 데이터로 저장하는 특징이 있어, 이를 활용하면 원하는 정보를 이름(Key)으로 빠르게 찾을 수 있고, key에 매핑된 value를 바로 사용할 수 있어서, 파이썬 개발자가 알아두면 정말 유용한 자료형 입니다. 

 빠르고 편리한 데이터 처리를 통해 파이썬 개발 시간 단축을 도와줄 파이썬 딕셔너리(Python dictionary)에 대해 이랜서에서 알려드리겠습니다.



 

파이썬 딕셔너리(Python dictionary)란?

python-dictionary

파이썬 딕셔너리(Python dictionary)는 key와 value가 상호 간 매핑된 쌍으로 구성된 자료구조입니다.

Key는 데이터의 이름, value는 실제 저장하고자 하는 값을 담고 있으며, 상호 매핑되어 있는 key - value쌍을 딕셔너리(dictionary)에 저장함으로써 원하는 정보를 이름으로 찾을 수 있게 됩니다.

파이썬에서 널리 활용되는 리스트나 튜플과 같은 자료구조는 데이터를 하나씩 순차적으로 찾아야 하지만 딕셔너리(dictionary)는 원하는 값을 이름(key)으로 한 번에 조회가 가능한 장점이 있습니다.

아래는 실제 코드에서 key (“pear”) 를 이용한 value ( 5000 ) 를 조회하는 예시입니다.

fruit_price_dict = { "apple"3000"pear"5000 }

print"Price:"fruit_price_dict["pear"]) # 5000 출력


 

파이썬 딕셔너리(Python Dictionary)를 사용하는 이유

파이썬 딕셔너리(Python dictionary)는 데이터를 키(Key)로 빠르게 조회할 수 있는 강력한 자료형입니다. 만약 파이썬에 딕셔너리가 없었다면, 개발자는 해시 생성과 이를 이용한 인덱싱 기능 등을 직접 구현해야 해 작업에 상당한 시간이 소요됐을 것입니다.

파이썬 딕셔너리(Python dictionary)는 이렇게 복잡한 작업을 간단하게 해결해 줍니다. 해시를 이용한 인덱싱 덕분에 데이터를 빠르게 찾을 수 있고, 데이터의 추가, 삭제, 수정과 같은 다양한 기능도 손쉽게 실행할 수 있습니다. 이로 인해 개발자는 데이터를 보다 효율적으로 빠르게 관리할 수 있습니다.



 

파이썬 딕셔너리(Python dictionary)의 주요특징

python-dictionary-append

파이썬 딕셔너리(Python dictionary)는 어떤 특징이 있을까요? 가장 핵심적인 특징을 알려드리고 이런 특징을 통해 얻을 수 있는 장점이 무엇인지 알려드리겠습니다.


 

Key-value 자료구조, Dictionary

파이썬 딕셔너리(Python dictionary)는 unique 한 key에 값(value)을 매핑함으로써 key-value 가 하나의 쌍으로 구성된 특징을 가지고 있습니다. 

딕셔너리(dictionary)에 key-value 쌍을 추가한 이후에는 key의 변경은 불가하고, value의 변경만 가능합니다.


 

빠른 접근과 수정

파이썬 딕셔너리(Python dictionary)는 빠른 연산속도를 자랑합니다. 조회, 삽입, 삭제 연산의 시간 복잡도가 O(1) 으로 딕셔너리(dictionary)를 잘 활용하면 데이터를 탐색하는데 소요되는 시간을 크게 단축할 수 있습니다.

이렇게 빠른 연산을 지원하는 이유는 딕셔너리(dictionary)가 hash 함수 처리된 key를 사용하기 때문인데요. 이런 특징을 잘 활용하면 작성하는 파이썬 코드의 성능을 극대화할 수 있습니다.



 

파이썬 딕셔너리(Python dictionary) 사용 사례

python-dictionary-to-json

앞서 파이썬 딕셔너리(Python dictionary)가 가진 주요 특징에 대해 알아보았는데요, 이러한 특징을 가진 딕셔너리(dictionary)가 실제로 개발 시 어떻게 사용되는지 코드를 통해 알려드리겠습니다.


 

데이터 저장과 검색

가장 기본적인 딕셔너리(dictionary)의 사용 사례는 데이터를 저장하고 빠르게 검색하는 것입니다. 

예를 들어 학생의 이름과 점수를 관리하는 프로그램을 코드로 작성하는 경우 리스트를 사용하면 다음과 같이 for 문을 사용해서 원하는 정보를 찾아야 합니다. 

students_scores_list = [

       ["Dan"85],

       ["Brian"100],

       ["Elancer"78],

       ["Diana"60]

   ]

 

for i in range (0len(students_scores_list)):

   if "George" in students_scores_list[i]:

       print("George's score: "students_scores_list[i][1])

       break

리스트의 첫 데이터부터 “Elancer”라는 이름이 나올 때까지 데이터를 확인해야 하는데요, 위의 예시에서는 세 번째 데이터에 Dan, Brian 을 확인한 뒤에서야 Elancer의 점수를 확인할 수 있었습니다.

파이썬 딕셔너리(Python dictionary)는 리스트에서 필요한 반복적인 확인 작업을 단 한 번으로 줄일 수 있습니다.

아래 딕셔너리(dictionary) 활용 예시를 보면 “Elancer”라는 이름으로 한 번에 원하는 결과를 찾아 출력할 수 있습니다.

students_scores = {

   "Dan"85,

   "Brian"100,

   "Elancer"78,

   "Diana"60

}

 

# 특정 학생의 성적 검색

scorestudents_scores["Elancer"]

print(score# 출력: 78


 

JSON parsing

또 다른 사용 사례는 JSON parsing입니다. 파이썬으로 서비스를 개발하는 경우 REST API를 통해 데이터를 가져오는 경우가 많습니다. 

대부분의 REST API는 JSON string 형식으로 데이터를 전달하는데 가공되지 않은 문자열 타입으로는 원하는 정보를 바로 찾아서 사용할 수 없습니다.

파이썬에서는 이런 불편함을 해소하기 위해 JSON string을 딕셔너리(dictionary) 형태로 변환할 수 있는 기능을 제공합니다.  변환 된 딕셔너리(dictionary)로 활용함으로써 아래와 같이 JSON string 형태의 데이터를 쉽게 다룰 수 있게 됩니다.

import json

 

# JSON string 정보

json_data'{"name": "Kim", "age": 30, "city": "Suwon"}' 

 

datajson.loads(json_data# dictionary 로 변환

 

# dictionary 형태로 변환 된 json_data

print(type(data)) # 출력: <class 'dict'>

print(data["name"])  # 출력: Kim

print(data["age"])   # 출력: 30

파이썬에서는 JSON 형식의 변환과 더불어 python dictionary to json 도 쉽게 가능합니다. JSON string을 활용하는 경우 아래와 같이 dictionary(data)를 json으로 다시 변환하여 사용 가능합니다.

# dict to json

# 출력: {"name": "Kim", "age": 30, "city": "Suwon"}

print(json.dumps(data)) 


 

빈도계산 

딕셔너리(dictionary)는 텍스트에서의 단어 빈도를 계산할 때에도 사용 가능합니다. 자주 사용하는 단어를 사용자에게 추천하는 알고리즘을 구현하거나 온라인상에서 사람들이 많이 언급하는 제품을 분석하고 싶을 때, 딕셔너리(dictionary)를 활용하여 쉽게 카운트가 가능합니다.

text"hello world hello universe"

word_count = {}

 

for word in text.split():

   if word in word_count:

       word_count[word] += 1

   else:

       word_count[word] = 1

# 출력: {'hello': 2, 'world': 1, 'universe' : 1}

print(word_count)

 

이랜서-회원가입
 


 

파이썬 딕셔너리(Python dictionary)의 활용

python-dictionary-update

이번에는 파이썬 딕셔너리(Python dictionary)를 선언하고 선언된 변수를 각종 함수를 이용하여 활용하는 방법을 알려드리겠습니다.


 

딕셔너리(Dictionary)의 변수선언 

파이썬 코드에서 딕셔너리(dictionary)를 활용하기 위해서는 변수 선언이  반드시 필요합니다. 변수의 선언은 코드 내에서 사용할 데이터의 자료형과 그 크기를 사전에 지정하는 작업으로, 딕셔너리(dictionary)를 사용하기 전 반드시 해야 하는 과정입니다.

딕셔너리(dictionary)의 변수 선언은  아래와 같이 두 가지 방법이 많이 사용됩니다.
 

# 1. 중괄호를 이용한 선언

empty_dict = {}

 

student_scores = {

   "Math"85,

   "Science"92,

   "Reading"78

}

 

# 2. dict{} 를 이용한 선언

empty_dictdict()

 

# 키-값 쌍이 포함된 딕셔너리 선언

student_scoresdict(Math=85Science=92Reading=78)

두 방법의 기능상 차이는 없으며 선호도에 따라 사용하실 수 있습니다.


 

딕셔너리(dictionary)에서 제공하는 메서드 

선언된 딕셔너리(dictionary) 변수는 파이썬에서 제공하는 다양한 연산자와 메서드를 통해 조작이 가능합니다. 

dictionary를 통해 데이터를 관리하다 보면 key-value를 효율적으로 조회하고 변경해야 하는데요. 딕셔너리(dictionary)에서 사용되는 메서드 5가지를 소개 드리겠습니다.


 

1. get() 메서드

딕셔너리(dictionary)에 저장된 값을 대괄호를 통해 조회하는 경우 KeyError 피하기 위해서는 key 저장되어 있는지 확인하는 코드를 사전에 확인해야 합니다.

get() 메서드는 이런 불편한 확인 코딩 작업을 획기적으로 줄여주는 기능입니다. get 메서드는 dictionary에 저장된 값을 조회함과 동시에 key 값이 없는 경우 KeyError 없이 기본 값을 리턴하도록 합니다.

my_dict["k1"] = "saved value"

valuemy_dict.get("k1""default")

print(value# 출력: saved value

 

valuemy_dict.get("k3""default")

print(value# 출력: default

student_scoresdict(Math=85Science=92Reading=78)

 

 

2. keys() 메서드

존재하지 않는 key를 조회함으로써 발생하는 KeyError는 개발자에게는 상당히 신경 쓰이는 문제입니다. dictionary를 사용할 때마다 일일이 key 유무를 확인하는 작업이 코드가 길어지게 만들고 그렇게 길어진 코드는 또 다른 에러를 유발하기도 합니다.

이럴 때 조회 가능한 key의 리스트를 먼저 확인해 볼 수 있다면 KeyError 문제를 피할 수 있는데요. dictionary는 이를 위해 keys() 메서드를 제공하고 있으며,  dictionary에 저장 된 key만 조회함으로써 KeyError를 피할 수 있습니다.

my_dict = { "k1"1"k2"2}

 

keysmy_dict.keys()

print(keys# 출력: dict_keys(['k1', 'k2'])


 

3. values() 메서드

딕셔너리(dictionary)에 내가 찾는 값(value)이 저장되어 있는지 확인하려면 key를 반드시 알아야 합니다.  key 정보를 정확히 모르는 경우 모든 dictionary 값을 일일이 확인해 봐야 하는 상황이 발생합니다. 

이럴 때 values() 메서드를 활용하면 아래 코드처럼 값의 저장유무를 빠르게 확인할 수 있습니다.
 

my_dict = {"k1""v1""k2""v2" }

valuesmy_dict.values()

print(values# 출력: dict_values(['v1', 'v2'])

 

# v1 이 my_dict에 있는지 확인한다.

print"v1" in values# 출력: True


 

4. pop() 메서드 

pop() 메서드는 del 키워드와 함께 저장된 dictionary 값 삭제에 많이 활용되는 메서드입니다. 딕셔너리(dictionary)에서 더 이상 사용하지 않는 값을 삭제하는 경우, 어떤 값이 삭제되었는지 알려주거나 나중에 다시 사용이 필요한 경우가 있습니다.  

del 키워드 사용해서 값을 삭제하는 경우 삭제된 값을 다시 사용하기 위해서는 삭제하기 전 변수를 미리 저장해 두어야 하는데요, pop() 메서드는 이런 과정을 한 번에 할 수 있도록 도와줍니다.

아래처럼 del 키워드 대신 pop() 메서드를 사용해 보세요, 짧은 코드를 통해 가독성 높은 코드를 작성하실 수 있을 것입니다.

my_dict = {"k1""v1""k2""v2" }

valuemy_dict.pop("k1")

print(value# 출력: v1

print(my_dict# 출력: {'k2': 'v2'}

 

 

5. update() 메서드

딕셔너리(dictionary)에 또 다른 dictionary를 추가하는 경우에  아래처럼  key, value를 하나씩 추가하면 코드가 길어질 뿐만 아니라 가독성이 좋지 못합니다.

my_dict = {"key1""value1"}

my_dict["key2"] = "value2"

my_dict["key3"] = "value3"

print(my_dict# 출력: {'key1': 'value1', 'key2': 'value2', 'key3': 'value3'}

이럴 때,  update() 메서드를 이용하면 아래 코드처럼 한번에 여러개의 key-value 쌍을 추가 하는게 가능합니다.

my_dict = {"key1": "value1"}

my_dict.update({"key2": "value2", "key3": "value3"})

print(my_dict) # 출력: {'key1': 'value1', 'key2': 'value2', 'key3': 'value3'}

파이썬 딕셔너리(python dictionary)에서 제공하는 유용한 메서드를 알아보았습니다. 다음은 python dictionary를 활용할 때  참고하시면 좋을만한 주의사항 몇 가지를 알려드리겠습니다.


 

딕셔너리(dictionary) 사용 시 주의사항

python-dictionary-추가

파이썬 딕셔너리(Python dictionary)를 사용할 때 파이썬 개발자들이 가장 많이 하는 실수 4가지 대해 알려드리겠습니다. 내용을 참고하셔서 코드의 안정성을 보장하고 불필요한 에러를 예방해 보세요.


 

Key 에 활용되는 자료형 

파이썬 딕셔너리(Python dictionary)를 사용할 때 보통은 string 형태를 많이 사용하지만 복잡한 기능을 개발하다 보면 리스트(list)나 셋(set) 자료형을 key로 사용하고 싶어집니다.  

간혹 리스트(list) 또는 셋(set)을 key로 사용해서 딕셔너리(dictionary)를 구성하여 동작하지 않는 코드를 작성하는 경우가 있는데, key에는 문자열, 숫자 또는 튜플같이  해시화가 가능한(Hashable) 자료형을 사용하셔야 한다는 점을 꼭 숙지하시기 바랍니다. 


 

Key 중복사용

파이썬 딕셔너리(Python dictionary)는 중복 key 저장을 허용하지 않습니다. key 중복을 허용하게 되면  같은 key에 여러 값이 저장된 경우에 어떤 값을 불러와 하는지 알 수 없기 때문에 같은 key에 값을 할당하는 경우 가장 마지막에 할당 한 값을 갖습니다.

이러한 특징이 있기에 딕셔너리( dictionary)를 사용할 때 key 중복에 유의해야 합니다. Key를 사용하여 dictionary 정보를 업데이트 할 때는 key가 중복으로 사용되고 있지는 않은지 확인해보세요. 동일한 key로 기존의 정보가 변경되면 이전 정보를 조회할 수 없게 됩니다.

test_dict = {"a"100"a"101}

print(test_dict# {'a': 101}


 

인덱스 활용

파이썬 딕셔너리(Python Dictionary)를 사용할 때 리스트 자료형처럼 저장된 정보를 순서대로 조회하고 싶어서 숫자형 인덱스를 사용할 때가 있습니다. 이런 경우 원하는 대로 특정 순서의 정보를 조회할 수 없을 뿐만 아니라 KeyError를 출력하면서 코드가 동작하지 않게 됩니다.

기본적으로 파이썬 딕셔너리(Python Dictionary는  인덱스를 활용한 조회를 허용하지 않습니다. dictionary에서 N 번째 추가된 데이터를 출력하기 위해서는 아래 코드처럼 for 문을 활용하여 조회해야 합니다.

test_dict = {"a"100"b"101}

print(test_dict[0]) # KeyError: 0

 

# dictionary에 입력 한 순서대로 값 출력

for kv in test_dict.items():

   print (kv# a 100, b 101 순서대로 출력

 

# 1번째 데이터만 값 출력

index0

for kv in test_dict.items():

   ifindex == 1):

       print (kv# 출력: b 101

       break

   index += 1


 

딕셔너리(Dictionary)의 복사

기존에 사용하던 dictionary 변수를 새로운 변수에 복사해서 사용하려고 할 때, 아래 코드처럼 새로운 변수에 할당하여 구현하는 경우를 종종 보게 됩니다. 

개발자는 test_dict2에 test_dict1과 동일한 dictionary를 만들어서 새로운 값을 할당하고 수정하는 목적으로 코드를 작성했지만 기대했던 것과는 다르게 새로 만든 변수에서 발생한 작업이 기존 변수에도 반영되는 것을 확인하게 됩니다.

test_dict1 = {"a"100"b"101}

test_dict2test_dict1

 

test_dict2["c"] = 300 # test_dict2 에 새로운 값 할당

print(test_dict1# test_dict2에서 등록한 값이 test_dict1에서도 출력

이럴 때에는 copy 모듈의 deepcopy 함수를 사용해 복사해야 아래 코드처럼 의도한 동작을 구현할 수 있습니다.

import copy

 

test_dict1 = {"a"100"b"101}

test_dict2copy.deepcopy(test_dict1)

 

test_dict2["c"] = 300 # test_dict2 에 새로운 값 할당

print(test_dict1# 출력: {"a" : 100, "b": 101}

print(test_dict2# 출력: {"a" : 100, "b": 101, "c": 300}

파이썬 딕셔너리(Python Dictionary)의 주의사항을 참고하여 코드를 작성한다면 dictionary를 활용한 데이터 저장, 검색 그리고 JSON 파싱을 수행하는 과정에서 예상하지 못한 동작을 예방할 수 있습니다.



 

파이썬 딕셔너리(Python Dictionary)를 익히고 

개발 작업 효율을 높여보세요! 

요즘 IT 개발 환경에서는 클라우드의 도입에 따른 Micro Service Architecture(MSA)의 확산으로 REST API 활용 사례가 점점 더 많아지고 있습니다.

REST API를 통한 데이터 전송으로 인해 파이썬 프로그램 개발 시 JSON string을 통한 데이터를 많이 활용합니다. 

이럴 때 알려드린 파이썬 딕셔너리(Python Dictionary)의 기능들을 올바르게 사용한다면 JSON string 파싱 구현 시 반복문 없이 빠른 데이터 조회를 보장함으로써 가독성과 성능 좋은 코드를 위한 개발자 여러분의 작업 효율을 눈에 띄게 높여 줄 것입니다.
 

이랜서 추천, 개발자의 업무 효율 높여주는 효율 개선 시리즈 

▶️ [Javascript 문법] 문자열 자르기부터 복잡한 문자열 총정리!

▶️ Java Optional, 도대체 왜 쓰는거야? (Feat. NPE 피하는 방법)

▶️ 정규 표현식; 자바 정규식을 활용해서 문자열을 손쉽게 처리하는 방법

 

이랜서 선정, 업무 자동화를 통한 자원 활용 업그레이드 시리즈

▶️ ERP 프로그램이란? 성공적인 ERP 구축을 위한 종합가이드

▶️ 프롬프트 작성법, 'Chat GPT 엔지니어'는 이렇게 사용합니다.

▶️ 노션 탬플릿 사용법 TOP5, 일 잘러 프리랜서가 될 수 있는 지름길 대공개!

 

 

파이썬을 활용할 IT 프로젝트를 찾으시나요?

대한민국 최대 IT 인재 매칭 플랫폼 이랜서

 

이랜서는 IT 전문가에게 24년의 데이터를 바탕으로 최적합 프로젝트를 매칭하는 IT 인재 매칭 플랫폼입니다.

프로젝트 개발을 위한 Java 전문가와 JavaScript, Typescript 전문가, 세련된 랜딩 페이지로 고객을 사로잡을 React, Vue, PHP, jQuery 전문가와 서버를 구축하고 데이터를 활용할 Node js, Spring, Nest jsSQL 전문가(Oracle, MySQL, MS SQL 등), UI/UX 디자인을 위한 피그마, Adobe XD, 포토샵, 일러스트 디자이너 등 파이썬 전문가를 포함하여 약 40만 명의 IT 전문 프리랜서가 이랜서를 통해 최적합 프로젝트를 매칭받고 있습니다.

 

python-iterate-dictionary

 

“담당 매니저가 계약부터 잔금 수급까지 

잘 챙겨주셔서 업무에만 집중할 수 있습니다.”

 

프로젝트 구인, 약 40만명의 IT 전문가들은 

이랜서를 통해 해결하고 있습니다.

python-merge-dictionaries


 

경력 기술서이력서 정리,

아직도 시간 낭비 하시나요?

 

이랜서 오토폴리오는 AI가 데이터를 바탕으로

합격률 높은 경력 기술서이력서 작성을 도와드립니다.

javascript-문자열-변환

오토폴리오는 이랜서 독자 기술로 개발된 이력서 자동관리 서비스 프로그램 입니다.  

초기 1회만 표준 양식으로 업데이트하면 경력과 이력이 자동으로 업데이트되고, 워드 파일로 다운로드하거나 메일로 바로 보낼 수 있는 편리한 시스템으로, AI가 억 단위 데이터를 바탕으로 합격률 높은 경력 기술서이력서 작성을 도와줍니다.



 

경기 불황으로 인한 프로젝트 수주의 어려움

40만 명의 IT 전문가는 이랜서와 함께 해결합니다.

 

python-sort-dictionary-by-value

이랜서는 24년의 데이터를 통해 IT 전문가에게 가장 적합한 IT 프로젝트를 추천해 드립니다. 필요한 사항이 있으면 전담 매니저에게 문의하세요. 데이터를 바탕으로 요구하는 조건에 가장 부합하는 IT 프로젝트를 매칭해 드립니다.

 

댓글0
이랜서에 로그인하고 댓글을 남겨보세요!
0
/200
이랜서에 로그인하고 댓글을 남겨보세요!
0
/200
실시간 인기 게시물
이랜서 PICK 추천 게시물