14. 자료구조_7~9

wonny_·2023년 7월 22일
0

자료구조&알고리즘

목록 보기
3/10
  • 튜플 정렬

    • 튜플은 수정이 불가하기 때문에 리스트로 변환 후 정렬
    • sort() 함수 이용하여 아이템 정렬
      `list() → sort(reverse=True) → tuple()
    • sorted(): 튜플로 정렬가능, 리스트 자료형 반환

  • 딕셔너리

    • keyvalue을 이용해서 자료 관리
    • { }를 이용해서 선언, 키:값 형태로 아이템 정의
      • key와 value에는 숫자, 문자열, 논리형 뿐만 아니라 컨테이너 자료형 가능
      • 단, key에 변할수 없는 값은 올 수 있지만, 변할 수 있는 값 불가
    • `get(key)를 이용해서 값(value) 조회 가능
    • getkey가 없어도 에러가 발생하지 않음

  • 딕셔너리 추가

    • 추가하려는 키가 이미 있다면 기존 값이 변경
    • 딕셔너리 [key]:value 형태로 아이템 추가

  • 딕셔너리 수정
Q. 하루에 몸무게(kg)와 신장(m)이 각각-0.3kg, +0.001m씩 변한 다고 할 때, 30일 후의 몸무게와 신장 값 저장 후 BMI 값 출력

myBodyInfo = {'이름':'gildong', '몸무게':83.0, '신장':1.8}
myBMI = myBodyInfo['몸무게'] / (myBodyInfo['신장'] ** 2)
print(f'myBodyInfo: {myBodyInfo}')
print(f'myBMI: {round(myBMI, 2)}')

date = 0
while True:
    date += 1
    
    myBodyInfo['몸무게'] = round((myBodyInfo['몸무게'] -0.3), 2)
    print('몸무게': {}'.format(myBodyInfo['몸무게']))
    
    myBodyInfo['신장'] = round((myBodyInfo['신장'] +0.001), 3)
    print('신장': {}'.format(myBodyInfo['신장']))
    
    myBMI = myBodyInfo['몸무게'] / myBodyInfo['신장'] **2)
    
    if date >= 30:
       break
       
print(f'myBodyInfo: {myBodyInfo}')
print(f'myBMI: {round(myBMI, 2)}')

  • key()와 values()
Q. 학생의 시험점수가 60점 미만이면 F(재시험)으로 값을 변경하는 코드를 key()를 이용

scores = {'kor':88, 'eng':55, 'mat':85, 'sci':57, 'his':82}
print(f'scores: {scores})

minScore = 60
fStr = 'F(재시험)'
fDic = {}

for key in scores:
   if scores[key] < minScore:
      scores[key] = fStr
      fDic[key] = fStr

print(f'scores: {scores}')
print(f'fDic: {fDic}')

  • 딕셔너리 삭제

    • del과 key를 이용하여 item 삭제
    • pop()와 key를 이용하여 item 삭제
      제거한 아이템의 벨류 값 반환 가능
Q. 딕셔너리에 저장된 점수 중 최저, 최고 삭제 

socres = {'s1':8.9, 's2':8.1, 's3':8.5, 's4':9.8, 's5':8.8}

minScore = 10; minScoreKey = ''
maxScore = 0; maxScoreKey = ''

for key in scores.keys():
    if scores[key] < minScore:
       minScore = scores[key]
       minScoreKey = key
    
    if scores[key] > maxScore:
       maxScore = score[key]
       maxScoreKey = key

del scores[minScoreKey]
del scores[maxScoreKey]

print('scores: {}'.format(scores))

  • 딕셔너리 유용한 기능

    • in, not in: 키(key)의 존재 유무 판단(True/False)
    • len() : 딕셔너리 길이(아이템 개수)
    • clear(): 모든 아이템 삭제

profile
파이팅

0개의 댓글