딕셔너리

아래와 같이 딕셔너리는 {} 괄호를 사용하며, key : value로 이루어져있다.

dictionary = {"key" : "value"}

값 호출하기

아래와같이 []안에 키를 입력하면 값을 호출할 수 있다.

dictionary = {"key" : "value"}
print(dictionary["key"])
# 출력 = value

키 호출하기

아래와같이 keys()라는 함수로 딕셔너리의 키를 출력할 수 있다.

dictionary = {"key" : "value"}
print(dictionary.keys())
# 출력 = dict_keys(['key'])

for 반복문을 활용하여 키와 값 출력

items()함수 : for 구문과 결합하여 키와 값을 출력할 수 있다. 딕셔너리에만 사용 가능.

dictionary = {"key1" : "value1", "key2" : "value2", "key3" : "value3" }

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

# 결과key1 value1
key2 value2
key3 value3

딕셔너리 예제 등급 매기기

student_scores = {
    "Harry": 81,
    "Ron": 78,
    "Hermione": 99,
    "Draco": 74,
    "Neville": 62,
}
student_grades = {}

for student in student_scores :
    if student_scores[student] > 90 :
        student_grades[student] = "뛰어나다."
    elif student_scores[student] > 80 :
        student_grades[student] = "기대 이상이다."
    elif student_scores[student] > 70 :
        student_grades[student] = "힘내자"
    else :
        student_grades[student] = "할 수 있다."

print(student_grades)

# 결과
{
    'Harry': '기대 이상이다.',
    'Ron': '힘내자',
    'Hermione': '뛰어나다.',
    'Draco': '힘내자',
    'Neville': '할 수 있다.'
}

Nesting

아래 예시와 같이 딕셔너리 내부에 딕셔너리, 리스트를 중첩시킬 수도 있다.

capitals = {
    "Korea" : "Seoul",
    "France" : "Paris",
    "Germany" : "Berlin"
}

travel_log = {
    "Korea" : {"cities_visited" : ["Seoul","Busan","Jeju"]},
    "France" : ["Berlin", "Hamburg", "Stuttgart"]
}

경매 프로그램

from art import logo
print(logo)
print("경매 프로그램에 오신것을 환영합니다.")

bidders = {}

is_on = True

def find_highest_bidder(bidding_record) :
    winner = ""
    winner_bid = 0
    for name in bidding_record:
        if bidding_record[name] > winner_bid:
            winner = name
            winner_bid = bidding_record[name]
    print(f"입찰자 : {winner}이 입찰가 : ${winner_bid}의 가격으로 입찰하였습니다.")

while is_on :
    name = input("경매자의 이름을 말씀해주세요 \\n > ")
    price = int(input("입찰가를 말씀해주세요. \\n >$ "))
    bidders[name] = price
    add = input("다른 경매자가 있을 경우 Yes, 없을경우 No를 입력해주세요. \\n > ")

    if add == "No" :
        is_on = False
        find_highest_bidder(bidders)