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 방지 방법:
- get() 메서드 사용:
icecream.get('누가바', '품절') # 키가 없으면 '품절' 문자열 반환
- get() 메서드는 키가 존재하면 해당 키에 매핑된 값을 반환하고, 키가 없으면 기본값을 반환합니다.
- 위 코드에서는 '누가바' 키가 없으면 '품절'이라는 문자열을 반환하여 에러를 방지합니다.
- in 연산자 사용:
if '누가바' in icecream:
print(icecream['누가바'])
else:
print('품절')
- in 연산자는 키가 사전에 존재하는지 여부를 확인합니다.
- 위 코드에서는 '누가바' 키가 존재하면 해당 값을 출력하고, 없으면 '품절'이라는 문자열을 출력합니다.
- setdefault() 메서드 사용:
price = icecream.setdefault('누가바', 0) # 키가 없으면 0으로 초기화
print(price)
- setdefault() 메서드는 키가 존재하면 해당 키에 매핑된 값을 반환하고, 키가 없으면 새로운 키를 생성하여 기본값을 할당합니다.
- 위 코드에서는 '누가바' 키가 없으면 0이라는 값으로 초기화하여 '누가바' 키를 사전에 추가합니다.
'Python > Python 300제' 카테고리의 다른 글
파이썬 300제 101~110 (분기문) (0) | 2024.07.15 |
---|---|
파이썬 300제 91~100 (딕셔너리) (1) | 2024.07.15 |
파이썬 300제 71~80 (튜플) (6) | 2024.07.15 |
파이썬 300제 61~70 (리스트) (1) | 2024.07.15 |
파이썬 300제 51~60 (리스트) (1) | 2024.07.15 |