본문 바로가기
파이썬기초(Python Basic)

파이썬 딕셔너리(Dictionary) 자료형

by 친절한에릭 2023. 4. 26.

안녕하세요, 오늘 파이썬 딕셔너리 자료형에 대해 알아보겠습니다. 파이썬에서 딕셔너리는 키(key)와 값(value)을 쌍으로 저장하는 자료구조입니다. 파이썬에서 매우 유용하며, 실용적인 예제와 함께 이해하기 쉽게 설명하겠습니다. 

 

딕셔너리 기초

딕셔너리 생성

딕셔너리를 생성하는 방법은 간단합니다. 중괄호({})를 사용하여 생성할 수 있습니다. 예를 들어, 과일과 가격 정보를 저하는 딕셔너리를 생성해 보겠습니다.

 

fruit_prices = {"사과": 1000, "바나나": 800, "포도": 3000}
print(fruit_prices)

 

 

딕셔너리에 항목 추가

딕셔너리에 새로운 항목을 추가하려면, 새로운 키와 값을 지정해 주기만 하면 됩니다.

 

fruit_prices["오렌지"] = 2000
print(fruit_prices)

 

 

딕셔너리 항목 제거

딕셔너리에서 항목을 삭제하려면 del 키워드를 사용합니다.

 

del fruit_prices["포도"]
print(fruit_prices)

 

 

딕셔너리에서 항목 얻기

딕셔너리에서 특정 키에 해당하는 값을 얻으려면, 대괄호를 사용하여 키를 지정해 주면 됩니다.

 

apple_price = fruit_prices["사과"]
print(apple_price)

 

 

딕셔너리 반복문

딕셔너리의 모든 항목을 반복하려면, for 반복문을 사용할 수 있습니다.

 

for key, value in fruit_prices.items():
    print(key, value)

 

 

딕셔너리 항목 수정

딕셔너리의 항목을 수정하려면, 키를 지정하고 새로운 값을 할당해 주면 됩니다.

 

fruit_prices["사과"] = 1200
print(fruit_prices)

 

 

딕셔너리 예제

 

사용자 정보 관리

딕셔너리는 사용자 정보를 관리하는데 매우 유용합니다. 사용자 ID를 키로 사용하여 각 사용자의 정보를 저장할 수 있습니다.

 

user_info = {
    "user1": {"이름": "김철수", "나이": 30, "이메일": "chulsoo@example.com"},
    "user2": {"이름": "이영희", "나이": 25, "이메일": "younghi@example.com"}
}

단어장 프로그램

단어장 프로그램을 만들 때도 딕셔너리를 활용할 수 있습니다. 단어를 키로 사용하여 뜻을 값으로 저장하면, 간단한 단어장 프로그램을 구현할 수 있습니다.

 

vocabulary = {"apple": "사과", "banana": "바나나", "grape": "포도"}

투표 프로그램

투표 프로그램을 만들 때도 딕셔너리를 사용할 수 있습니다. 후보자 이름을 키로 사용하고, 득표수를 값으로 저장하면 간단한 투표 프로그램을 구현할 수 있습니다.

 

votes = {"철수": 10, "영희": 12, "민수": 8}

주식 정보 관리

주식 정보를 관리할 때도 딕셔너리를 사용할 수 있습니다. 주식 종목 코드를 키로 사용하고, 종목 이름과 가격을 값으로 저장하면 효과적으로 주식 정보를 관리할 수 있습니다.

 

stock_info = {
    "005930": {"종목명": "삼성전자", "가격": 80000},
    "000660": {"종목명": "SK하이닉스", "가격": 120000}
}

 

딕셔너리 메소드

keys()

딕셔너리의 모든 키를 반환하는 메소드입니다.

 

keys = fruit_prices.keys()
print(keys)

 

values()

딕셔너리의 모든 값을 반환하는 메소드입니다.

 

values = fruit_prices.values()
print(values)

 

items()

딕셔너리의 모든 항목(키와 값 쌍)을 반환하는 메소드입니다.

 

items = fruit_prices.items()
print(items)

 

update()

두 딕셔너리를 병합하는 메소드입니다. 겹치는 키가 있을 경우, 값이 업데이트됩니다.

 

dict1 = {"a": 1, "b": 2}
dict2 = {"b": 3, "c": 4}
dict1.update(dict2)
print(dict1)

 

clear()

딕셔너리의 모든 항목을 삭제하는 메소드입니다.

 

fruit_prices.clear()
print(fruit_prices)

 

딕셔너리 사용의 이점 및 한계

이점

  1. 키를 이용해 값을 빠르게 검색할 수 있습니다.
  2. 키와 값 쌍으로 데이터를 관리할 수 있어서 구조가 직관적입니다.
  3. 다양한 데이터 타입을 키와 값으로 사용할 수 있습니다.

한계

  1. 키는 중복될 수 없습니다. 중복된 키를 사용하면 기존 값을 덮어씁니다.
  2. 딕셔너리는 순서를 보장하지 않습니다. 순서를 유지하려면 **collections.OrderedDict**를 사용해야 합니다.

 

딕셔너리 응용

 

딕셔너리는 프로그래밍에서 다양한 상황에 활용할 수 있습니다. 여기서는 몇 가지 추가적인 딕셔너리 응용 사례를 살펴보겠습니다.

계층 구조 데이터 관리

딕셔너리를 중첩하여 계층 구조 데이터를 관리할 수 있습니다. 예를 들어, 회사의 부서별 직원 정보를 저장하는 딕셔너리를 만들 수 있습니다.

 

employees = {
    "영업팀": {
        "김영업": {"나이": 30, "직급": "대리"},
        "이영업": {"나이": 27, "직급": "사원"},
    },
    "개발팀": {
        "박개발": {"나이": 35, "직급": "과장"},
        "최개발": {"나이": 29, "직급": "대리"},
    }
}

 

 

카운터 프로그램

딕셔너리를 사용하여 각 항목의 출현 빈도를 계산할 수 있습니다. 예를 들어, 문자열에서 각 문자의 출현 횟수를 세는 프로그램을 만들 수 있습니다.

 

string = "hello world"
counter = {}

for char in string:
    if char in counter:
        counter[char] += 1
    else:
        counter[char] = 1

print(counter)

 

딕셔너리를 활용한 타이타닉 분석 예제

이제 간단한 딕셔너리 사용법을 익혔으니, 온라인에서 제공되는 CSV 파일을 이용해 데이터 분석을 수행하는 코드를 작성해 보겠습니다. 우선 팬더스 라이브러리를 사용하여 온라인 CSV 파일을 읽어오고, 딕셔너리로 변환한 다음, 이를 활용해 데이터 분석을 진행해보겠습니다.

 

판다스를 이용한 온라인 CSV 파일 읽기

먼저, 판다스 라이브러리를 사용하여 온라인 CSV 파일을 읽어옵니다.

 

import pandas as pd

# 온라인 CSV 파일 URL
csv_url = "<https://raw.githubusercontent.com/datasciencedojo/datasets/master/titanic.csv>"

# CSV 파일을 읽어온다.
dataframe = pd.read_csv(csv_url)

# 데이터프레임을 딕셔너리로 변환한다.
data_dict = dataframe.to_dict(orient='records')

 

성별에 따른 생존율 계산하기

이제 이 딕셔너리를 활용해 타이타닉 승객 데이터를 기반으로 성별에 따른 생존율을 계산해보겠습니다.

gender_passenger_count = {'male': 0, 'female': 0}
gender_survivor_count = {'male': 0, 'female': 0}

for passenger in data_dict:
    gender = passenger['Sex']
    gender_passenger_count[gender] += 1

    if passenger['Survived'] == 1:
        gender_survivor_count[gender] += 1

gender_survival_rate = {gender: survivor_count / gender_passenger_count[gender] * 100 for gender, survivor_count in gender_survivor_count.items()}

print("성별에 따른 생존율:")
for gender, survival_rate in gender_survival_rate.items():
    print(f"{gender}: {survival_rate:.2f}%")

 

위 코드를 실행하면 타이타닉 승객 데이터를 기반으로 성별에 따른 생존율을 계산하고 출력합니다. 이처럼 온라인에서 제공되는 다양한 CSV 데이터를 활용하여 데이터 분석 프로젝트를 진행할 수 있습니다. 이 예제를 참고하여 다양한 데이터를 활용하여 프로젝트를 계획하고 실행해 보세요.

 

딕셔너리와 관련된 주의사항

딕셔너리를 사용할 때 주의해야 할 몇 가지 사항이 있습니다.

  1. 딕셔너리는 메모리를 많이 사용합니다. 대용량 데이터를 처리할 때는 딕셔너리 대신 다른 자료구조를 고려해야 할 수도 있습니다.
  2. 딕셔너리의 키는 변경 불가능한 데이터 타입만 사용할 수 있습니다. 딕셔너리의 키로 사용할 수 없는 데이터 타입을 사용하려면, 키를 변경 가능한 데이터 타입으로 변환해야 합니다.
  3. 딕셔너리에 없는 키로 값을 조회하려고 하면 KeyError가 발생합니다. 이를 방지하기 위해 get() 메소드를 사용하거나, in 연산자를 사용하여 키가 딕셔너리에 있는지 확인해야 합니다.
  4.  

결론

 

파이썬 딕셔너리는 매우 유용하고 강력한 자료구조입니다. 딕셔너리의 기본적인 사용법과 예제, 그리고 딕셔너리의 이점과 한계에 대해 알아보았습니다. 이제 여러분도 딕셔너리를 활용하여 다양한 프로그램에 활용하시기 바랍니다.

 

FAQs

Q1. 딕셔너리와 리스트의 차이점은 무엇인가요?

A1. 리스트는 순서가 있는 데이터를 저장하는 반면, 딕셔너리는 키와 값 쌍으로 데이터를 저장합니다. 리스트는 인덱스를 사용해 데이터에 접근하지만, 딕셔너리는 키를 사용해 데이터에 접근합니다.

 

Q2. 딕셔너리의 키로 사용할 수 있는 데이터 타입은 무엇인가요?

A2. 딕셔너리의 키로는 변경 불가능한(immutable) 데이터 타입을 사용할 수 있습니다. 예를 들어, 문자열, 숫자, 튜플 등이 가능하며, 리스트와 딕셔너리와 같은 변경 가능한(mutable) 데이터 타입은 사용할 수 없습니다.

 

Q3. 딕셔너리에서 키가 없는 경우 어떻게 처리할 수 있나요?

A3. 딕셔너리에서 키가 없는 경우 get() 메소드를 사용하여 기본값을 반환하게 할 수 있습니다.

value = fruit_prices.get("딸기", 0)
print(value)

 

Q4. 딕셔너리를 정렬하려면 어떻게 해야 하나요?

A4. 딕셔너리를 정렬하려면 sorted() 함수를 사용할 수 있습니다. 키나 값에 따라 정렬할 수 있으며, 오름차순 또는 내림차순으로 정렬할 수 있습니다.

sorted_by_key = dict(sorted(fruit_prices.items()))
sorted_by_value = dict(sorted(fruit_prices.items(), key=lambda item: item[1]))

 

Q5. 딕셔너리에서 중복된 값을 제거하려면 어떻게 해야 하나요?

A5. 딕셔너리에서 중복된 값을 제거하려면, 값을 기준으로 새로운 딕셔너리를 만들어야 합니다.

unique_values = {value: key for key, value in fruit_prices.items()}
print(unique_values)

 

파이썬 딕셔너리 자료형

 

댓글