학습 정리 - 딕셔너리 (2025.01.08)

수아·2025년 1월 8일
0

학습 정리

목록 보기
7/51
post-thumbnail

회고리스트

1. 딕셔너리 와 리스트와 튜플의 차이점에 대하여 정리하시오.

  • 리스트 [ ] : 변경 가능 (mutable), 순서 있음
  • 튜플 ( ) : 변경 불가능 (immutable), 순서 있음
  • 딕셔너리 { } : 변경 가능 (mutable), 키-값 쌍으로 저장, 순서 없음

    ( 찾아보니 Python 3.7부터는 딕셔너리도 삽입된 순서를 보장하도록 변경되었고
    여전히 인덱스 번호를 사용해서 직접적인 연산을 할 수는 없다고 한다. )

2. 객체와 클래스에 대하여 예습하시오? (예습)

  • 클래스
    : 객체를 만들기 위한 설계도
    : 속성(변수)과 행동(메서드)를 정의한 틀로 객체를 생성하기 위한 청사진 역할
    : 구성요소는 __init__() 메서드 / 속성 / 메서드
  • 객체
    : 클래스로 생성된 실제 사용가능한 인스턴스
    : 클래스에 정의된 속성과 메서드를 가진 독립적인 개체

예를 들어 클래스는 자동차 설계도 / 객체는 설계도를 기반으로 만들어진 실제 자동차 라고 생각하면 된다.
클래스는 여러 자동차르 만들기 위한 설계도이며 객체는 클래스에서 만든 각 자동차이다.
각 객체는 속성(브랜드, 색상)과 행동(달리기, 멈춤)을 가진다.

3. 딕셔너리 추가

# inventory 딕셔너리에 아래 데이터를 추가하라.
inventory = {"메로나": [300, 20],
              "비비빅": [400, 3],
              "죠스바": [250, 100]}
이름 	가격 	재고
월드콘	500	     7
inventory["월드콘"] = [500, 7]

print(inventory)
# 출력 : 
# {'메로나': [300, 20], '비비빅': [400, 3], '죠스바': [250, 100], '월드콘': [500, 7]}

4. 다음의 딕셔너리로부터 key 값으로만 구성된 리스트를 생성하라.

(힌트:딕셔너리 keys() 메서드)

icecream = {'탱크보이': 1200, '폴라포': 1200, '빵빠레': 1800, '월드콘': 1500, '메로나': 1000}

key_list = []
for i in icecream.keys() : 
	key_list.append(i)
    
print(key_list) 	# 출력 : ['탱크보이', '폴라포', '빵빠레', '월드콘', '메로나']

5. icecream 딕셔너리에서 아이스크림 판매 금액의 총합을 출력하라.

icecream = {'탱크보이': 1200, '폴라포': 1200, '빵빠레': 1800, '월드콘': 1500, '메로나': 1000}
출력 예시: 6700

sum = 0
for price in icecream.values() : 
    sum += price

print(sum)		# 출력 : 67000

6. 딕셔너리 update 메서드

# 아래의 new_product 딕셔너리를 다음 icecream 딕셔너리에 추가하라.
icecream = {
	'탱크보이': 1200,
    '폴라포': 1200,
    '빵빠레': 1800,
    '월드콘': 1500,
    '메로나': 1000
    }
new_product = {'팥빙수':2700, '아맛나':1000}
icecream.update(new_product)

print(icecream)
# 출력 : {'탱크보이': 1200, '폴라포': 1200,
# 		'빵빠레': 1800, '월드콘': 1500, '메로나': 1000, '팥빙수': 2700, '아맛나': 1000}

7.

# data에는 매수한 종목들의 OHLC (open/high/low/close) 가격 정보가 바인딩 되어있다.
# 수수료를 0.014 %로 가정할 때,
# 각 가격에 수수료를 포함한 가격을 한라인에 하나씩 출력하라.
data = [
    [ 2000,  3050,  2050,  1980],
    [ 7500,  2050,  2050,  1980],
    [15450, 15050, 15550, 14900]
    ]
2000.28
3050.427
2050.2870000000003
...
for i in range(3) : 
    for j in data[i] : 
        print(j * (1 + 0.00014))

난 이렇게↑ 코딩했는데 팀원이 요렇게↓ 했다.
나는 설명도 안 해주고 냅다 더했는데 팀원이 한 게 더 멋있어 보인다.

charge = 0.014 / 100    # 수수료
result = []    # 출력 리스트
for i in range(len(data)):
  for j in range(len(data[i])):
    value = data[i][j] + (data[i][j] * charge)
    result.append(value)
    print(value)

8. 7번의 출력 결과에 행단위로 "----" 구분자를 추가하라.

for i in range(3) : 
    for j in data[i] : 
        print(j * (1 + 0.00014))
    print("----")

9. ohlc - 1

# ohlc 리스트에는
# 시가(open), 고가 (high), 저가 (low) , 종가(close)가 날짜별로 저장돼 있다.
# 화면에 종가데이터를 출력하라.
ohlc = [["open", "high", "low", "close"],
        [100, 110, 70, 100],
        [200, 210, 180, 190],
        [300, 310, 300, 310]]
100
190
310
for i in range(1, 4) : 		# range(0,4)의 경우 "close"까지 출력됨
    print(ohlc[i][3])

10. ohlc - 2

# 종가가 150원보다 큰경우에만 종가를 출력하라.
190
310
for i in range(1, 4) : 
    if ohlc[i][3] > 150 : 
        print(ohlc[i][3])

11. ohlc - 3

# 종가가 시가 보다 크거나 같은 경우에만 종가를 출력하라.
100
310
for i in range(1, 4) : 
    if ohlc[i][3] >= ohlc[i][0] : 		# 종가 >= 시가 의 경우에만 종가 출력
        print(ohlc[i][3])

12. ohlc - 4

# 고가와 저가의 차이를 변동폭으로 정의할 때
# 변동폭을 volatility 이름의 리스트에 저장하라.
[40, 30, 10]
volatility = []

for i in range(1, 4) :
    volatility.append(ohlc[i][1] - ohlc[i][2])

print(volatility)

13. ohlc - 5

# 종가가 시가보다 높은 날의 변동성 (고가 - 저가)을 화면에 출력하라.
10
for i in range(1, 4) : 
    if ohlc[i][3] > ohlc[i][0] : 
        print(ohlc[i][1] - ohlc[i][2])

* 딕셔너리 함수

  • items() : 딕셔너리의 key, value값을 튜플 형태로 반환

  • keys() : 딕셔너리의 key값만 반환

  • values() : 딕셔너리의 value값만 반환

자꾸 뒤에 s를 빼먹어서 오류가 나는데 조심해야 겠다.

  • update() : 딕셔너리에 다른 딕셔너리의 내용을 추가하거나 업데이트
    딕셔너리는 + 연산이 안됨

  • get(key) : key에 해당하는 value값을 반환하며 key가 없을 때 기본값을 설정 가능

dic = {'a': 1, 'b': 2, 'c': 3}
print(dic.get('a'))		# 출력 : 1
print(dic.get('z', '없음')) 	# 출력 : '없음'
  • pop(key) : 해당 key값을 제거하고 반환

  • clear() : 딕셔너리의 모든 요소를 삭제
    del은 딕셔너리 자체를 삭제하지만 clear()은 안에 있는 요소들만 삭제

  • fromkeys() : 리스트 등을 사용하여 키와 초기값으로 새 딕셔너리를 생성

key_list = ['x', 'y', 'z']

new_dict = dict.fromkeys(key_list, 0)
# dict는 파이썬 내장 클래스
#파이썬에서 기본적으로 제공하는 딕셔너리 생성자

print(new_dict) 	# 출력 : {'x': 0, 'y': 0, 'z': 0}

딕셔너리는 키 밸루 이다.
딕셔너리는 수정가능 , 순서없음, 중복안됨 이다.
파이썬은 객체 지향 언어이며, 객체지향 언어에서 클래스와 객체는 핵심이다.

클래스와 객체는 항상 배워도 뭔지 잘 모르겠다...
느낌적인 느낌....
설명해보라고 하면 아 그거.. 그거 알지 이런 느낌....

0개의 댓글