본문 바로가기
Python/파이썬 300제

파이썬 300제 81~90 (딕셔너리)

by Maccrey 2024. 6. 6.
반응형

81. 기본적으로 데이터 언패킹은 좌변의 변수와 우변 데이터 개수가 같아야 합니다. 하지만 star expression을 사용하면 변수의 개수가 달라도 데이터 언패킹을 할 수 있습니다.

 

튜플에 저장된 데이터 중에서 앞에 있는 두 개의 데이터만 필요할 경우 나머지 데이터의 언패킹 코드를 작성할 필요가 없습니다.

>> a, b, *c = (0, 1, 2, 3, 4, 5)
>> a
0
>> b
1
>> c
[2, 3, 4, 5]

다음과 같이 10개의 값이 저장된 scores 리스트가 있을 때, start expression을 사용하여 좌측 8개의 값을 valid_score 변수에 바인딩하여라.

scores = [8.8, 8.9, 8.7, 9.2, 9.3, 9.7, 9.9, 9.5, 7.8, 9.4]

->

scores = [8.8, 8.9, 8.7, 9.2, 9.3, 9.7, 9.9, 9.5, 7.8, 9.4]
*valid_score, _, _= scores
print(valid_score)

 

코드해석

 

1. scores = [8.8, 8.9, 8.7, 9.2, 9.3, 9.7, 9.9, 9.5, 7.8, 9.4]

  • 이 코드는 scores라는 이름의 리스트를 만들고, 리스트에는 숫자 값들을 할당합니다. 이 값들은 점수나 다른 수치 데이터를 나타낼 수 있습니다.

2. *valid_score, _, _ = scores

  • 이 코드는 scores 리스트를 언패킹합니다. 별표(*)는 리스트나 튜플과 같은 시퀀스를 언패킹하는 데 사용됩니다.
  • valid_score, _, _는 변수들로, 여기에 리스트의 요소들이 할당됩니다.
    • valid_score는 리스트의 첫 번째 요소를 저장합니다.
    • 언더스코어(_)는 이번 경우에는 두 번째와 세 번째 요소가 필요하지 않기 때문에 자리 잡는 역할을 합니다. 일부러 버리는 것입니다.

3. print(valid_score)

  • 이 코드는 valid_score 변수에 할당된 값을 출력합니다.

코드 실행 시 출력:

8.8

결론적으로, 이 코드는 scores 리스트에서 첫 번째 요소 (8.8)를 추출하여 valid_score 변수에 할당하고, 나머지 요소들은 언더스코어를 사용하여 버립니다.

 

 

82. 다음과 같이 10개의 값이 저장된 scores 리스트가 있을 때, start expression을 사용하여 우측 8개의 값을 valid_score 변수에 바인딩하여라.

scores = [8.8, 8.9, 8.7, 9.2, 9.3, 9.7, 9.9, 9.5, 7.8, 9.4]

->

scores = [8.8, 8.9, 8.7, 9.2, 9.3, 9.7, 9.9, 9.5, 7.8, 9.4]
a, b, *valid_score = scores
print(valid_score)

 

83. 다음과 같이 10개의 값이 저장된 scores 리스트가 있을 때, start expression을 사용하여 가운데 있는 8개의 값을 valid_score 변수에 바인딩하여라.

scores = [8.8, 8.9, 8.7, 9.2, 9.3, 9.7, 9.9, 9.5, 7.8, 9.4]

->

scores = [8.8, 8.9, 8.7, 9.2, 9.3, 9.7, 9.9, 9.5, 7.8, 9.4]
a, *valid_score, b = scores
print(valid_score)

 

84. temp 이름의 비어있는 딕셔너리를 만들라.

->

temp = { }

 

85. 다음 아이스크림 이름과 희망 가격을 딕셔너리로 구성하라.

->

ice = {"메로나": 1000, "폴라포": 1200, "빵빠레": 1800}
print(ice)

 

86. 85 번의 딕셔너리에 아래 아이스크림 가격정보를 추가하라.

->

ice = {"메로나": 1000, "폴라포": 1200, "빵빠레": 1800}
ice["죠스바"] = 1200
ice["월드콘"] = 1500
print(ice)

 

87. 다음 딕셔너리를 사용하여 메로나 가격을 출력하라.

ice = {'메로나': 1000,
       '폴로포': 1200,
       '빵빠레': 1800,
       '죠스바': 1200,
       '월드콘': 1500}
실행 예:
메로나 가격: 1000

->

print("메로나 가격: ", ice["메로나"])

 

88. 다음 딕셔너리에서 메로나의 가격을 1300으로 수정하라.

ice = {'메로나': 1000,
       '폴로포': 1200,
       '빵빠레': 1800,
       '죠스바': 1200,
       '월드콘': 1500}

->

ice["메로나"] = 1300

 

89. 다음 딕셔너리에서 메로나를 삭제하라.

ice = {'메로나': 1000,
       '폴로포': 1200,
       '빵빠레': 1800,
       '죠스바': 1200,
       '월드콘': 1500}

->

del ice["메로나"]
print(ice)

 

90. 다음 코드에서 에러가 발생한 원인을 설명하라.

>> icecream = {'폴라포': 1200, '빵빠레': 1800, '월드콘': 1500, '메로나': 1000}
>> icecream['누가바']
Traceback (most recent call last):
  File "<pyshell#69>", line 1, in <module>
    icecream['누가바']
KeyError: '누가바'

-> 딕셔너리에 없는 키를 사용해서 인덱싱하면 에러가 발생합니다.

KeyError 방지 방법:

  1. get() 메서드 사용:
icecream.get('누가바', '품절')  # 키가 없으면 '품절' 문자열 반환
 
  • get() 메서드는 키가 존재하면 해당 키에 매핑된 값을 반환하고, 키가 없으면 기본값을 반환합니다.
  • 위 코드에서는 '누가바' 키가 없으면 '품절'이라는 문자열을 반환하여 에러를 방지합니다.
  1. in 연산자 사용:
if '누가바' in icecream:
    print(icecream['누가바'])
else:
    print('품절')
 
  • in 연산자는 키가 사전에 존재하는지 여부를 확인합니다.
  • 위 코드에서는 '누가바' 키가 존재하면 해당 값을 출력하고, 없으면 '품절'이라는 문자열을 출력합니다.
  1. setdefault() 메서드 사용:
price = icecream.setdefault('누가바', 0)  # 키가 없으면 0으로 초기화
print(price)
 
  • setdefault() 메서드는 키가 존재하면 해당 키에 매핑된 값을 반환하고, 키가 없으면 새로운 키를 생성하여 기본값을 할당합니다.
  • 위 코드에서는 '누가바' 키가 없으면 0이라는 값으로 초기화하여 '누가바' 키를 사전에 추가합니다.

 

반응형