Dictionaries / 사전

6.1 A Simple Dictionary / 간단한 사전

  • Dictionaries connect related pieces of information.
    사전은 관련된 정보를 연결해 준다.
  • Each piece of information in a dictionary is stored as a key-value pair.
    사전의 각 정보는 키-값 쌍으로 저장된다.
# 6.1_dictionary.py
alien_0 = {'color': 'green', 'points': 5}

Accessing Values / 값에 접근

  • You can access the value associated with a key using square brackets and the key name.
    대괄호와 키 이름을 사용하여 키와 연결된 값을 액세스할 수 있다.
# 6.2_access_update_remove.py
alien_0 = {'color': 'green', 'points': 5}

print(alien_0['color']) # green
print(alien_0['points']) # 5

Use get() to Avoid Errors / 오류를 피하려면 get()을 사용하십시오

  • You can use the get() method to access a value associated with a key.
    get() 메서드를 사용하여 키와 연결된 값을 액세스할 수 있다.
  • If the key doesn’t exist, get() returns None or a default value that you provide.
    키가 존재하지 않으면 get()None 또는 제공하는 기본값을 반환한다.
# 6.2_access_update_remove.py
alien_0 = {'color': 'green', 'points': 5}

print(alien_0.get('color')) # green
print(alien_0.get('points')) # 5
print(alien_0.get('x_position')) # None
print(alien_0.get('x_position', 'No point value assigned.')) # No point value assigned.

Updating Values / 값 업데이트

  • You can change the value associated with a key using square brackets and the key name.
    대괄호와 키 이름을 사용하여 키와 연결된 값을 변경할 수 있다.
# 6.2_access_update_remove.py
alien_0 = {'color': 'green', 'points': 5}
print(alien_0['color']) # green

alien_0['color'] = 'yellow'
print(alien_0['color']) # yellow

Adding Key-Value Pairs / 키-값 쌍 추가

  • You can add new key-value pairs to a dictionary at any time.
    언제든지 사전에 새 키-값 쌍을 추가할 수 있다.
  • You can also start with an empty dictionary.
    또한 빈 사전으로 시작할 수 있다.
# 6.2_access_update_remove_remove.py
alien_0 = {}

alien_0['color'] = 'green'
alien_0['points'] = 5
alien_0['x_position'] = 0
alien_0['y_position'] = 25

print(alien_0) # {'color': 'green', 'points': 5, 'x_position': 0, 'y_position': 25}

Removing Key-Value Pairs / 키-값 쌍 제거

  • You can remove any key-value pair with the del statement.
    del 문으로 키-값 쌍을 제거할 수 있다.
# 6.2_access_update_remove.py
alien_0 = {'color': 'green', 'points': 5}
print(alien_0) # {'color': 'green', 'points': 5}

del alien_0['points']
print(alien_0) # {'color': 'green'}

6.2 Looping Through a Dictionary / 사전 반복

  • If a dictionary has many pairs, define each pair on a separate line.
    사전에 많은 쌍이 있는 경우 각 쌍을 별도의 줄에 정의한다.
  • You can use the items() method to return a list of key-value pairs.
    items() 메서드를 사용하여 키-값 쌍의 목록을 반환할 수 있다.
  • You can use any name you want for the temporary variable that holds each key-value pair.
    각 키-값 쌍을 보유하는 임시 변수에 원하는 이름을 사용할 수 있다.
# 6.3_dictionary_looping.py
user_0 = {
    'username': 'efermi',
    'first': 'enrico',
    'last': 'fermi',
}

for key, value in user_0.items():
    print(f"\nKey: {key}")
    print(f"Value: {value}")

# Key: username
# Value: efermi

# Key: first
# Value: enrico

# Key: last
# Value: fermi

Looping Through All Keys / 모든 키 반복

  • You can use the keys() method to return a list of keys.
    keys() 메서드를 사용하여 키의 목록을 반환할 수 있다.
  • You can also omit the keys() method because looping through the keys is the default behavior when looping through a dictionary.
    사전을 반복할 때 키를 반복하는 것이 기본 동작이므로 keys() 메서드를 생략할 수도 있다.
# 6.3_dictionary_looping.py
user_0 = {
    'username': 'efermi',
    'first': 'enrico',
    'last': 'fermi',
}

for key in user_0.keys():
    print(key.title())

# Username
# First
# Last
  • You can also access the value associated with any key you care about inside the loop by using the current key.
    현재 키를 사용하여 루프 내에서 관심 있는 키와 연결된 값을 액세스할 수도 있다.
# 6.3_dictionary_looping.py
favorite_languages = {
    'jen': 'python',
    'sarah': 'c',
    'edward': 'ruby',
    'phil': 'python',
}

friends = ['phil', 'sarah']

for name in favorite_languages.keys():
    print(f"Hi {name.title()}.")

    if name in friends:
        language = favorite_languages[name].title()
        print(f"\t{name.title()}, I see you love {language}!")

# Hi Jen.
# Hi Sarah.
# 	Sarah, I see you love C!
# Hi Edward.
# Hi Phil.
# 	Phil, I see you love Python!

Looping Through All Values / 모든 값 반복

  • You can use the values() method to return a list of values.
    values() 메서드를 사용하여 값의 목록을 반환할 수 있다.
# 6.3_dictionary_looping.py
user_0 = {
    'username': 'efermi',
    'first': 'enrico',
    'last': 'fermi',
}

for value in user_0.values():
    print(value.title())

# Efermi
# Enrico
# Fermi

Sorting Keys / 키 정렬

  • You can use the sorted() function to get a copy of the keys in order.
    sorted() 함수를 사용하여 키의 복사본을 정렬된 순서로 얻을 수 있다.
# 6.4_sorting_and_sets.py
favorite_languages = {
    'jen': 'python',
    'sarah': 'c',
    'edward': 'ruby',
    'phil': 'python',
}

for name in sorted(favorite_languages.keys()):
    print(f"{name.title()}, thank you for taking the poll.")

# Edward, thank you for taking the poll.
# Jen, thank you for taking the poll.
# Phil, thank you for taking the poll.
# Sarah, thank you for taking the poll.

Use Sets to Avoid Duplicate Values / 중복 값을 피하려면 세트를 사용하십시오

  • You can use a set to store unique values that you want to track.
    추적하려는 고유한 값을 저장하기 위해 세트를 사용할 수 있다.
# 6.4_sorting_and_sets.py
favorite_languages = {
    'jen': 'python',
    'sarah': 'c',
    'edward': 'ruby',
    'phil': 'python',
}

print("The following languages have been mentioned:")
for language in set(favorite_languages.values()):
    print(language.title())

# The following languages have been mentioned:
# C
# Python
# Ruby

6.3 Nesting / 중첩

  • You can nest (put) a list inside a dictionary, a dictionary inside a list, or even a dictionary inside another dictionary.
    리스트를 사전 안에, 사전을 리스트 안에, 또는 사전을 다른 사전 안에 넣을 수 있다.

List of Dictionaries / 사전의 리스트

# 6.5_nesting.py
alien_0 = {'color': 'green', 'points': 5}
alien_1 = {'color': 'yellow', 'points': 10}
alien_2 = {'color': 'red', 'points': 15}

aliens = [alien_0, alien_1, alien_2]

for alien in aliens:
    print(alien)

# {'color': 'green', 'points': 5}
# {'color': 'yellow', 'points': 10}
# {'color': 'red', 'points': 15}

List in a Dictionary / 사전의 리스트

# 6.5_nesting.py
pizza = {
    'crust': 'thick',
    'toppings': ['mushrooms', 'extra cheese'],
}

print(f"You ordered a {pizza['crust']}-crust pizza "
      "with the following toppings:")

for topping in pizza['toppings']:
    print("\t" + topping)

# You ordered a thick-crust pizza with the following toppings:
# 	mushrooms
# 	extra cheese

Dictionary in a Dictionary / 사전의 사전

# 6.5_nesting.py
users = {
    'aeinstein': {
        'first': 'albert',
        'last': 'einstein',
        'location': 'princeton',
    },
    'mcurie': {
        'first': 'marie',
        'last': 'curie',
        'location': 'paris',
    },
}

for username, user_info in users.items():
    print(f"\nUsername: {username}")
    full_name = f"{user_info['first']} {user_info['last']}"
    location = user_info['location']

    print(f"\tFull name: {full_name.title()}")
    print(f"\tLocation: {location.title()}")

# Username: aeinstein
# 	Full name: Albert Einstein
# 	Location: Princeton

# Username: mcurie
# 	Full name: Marie Curie
# 	Location: Paris