[python] 딕셔너리(Dictionary)

Cjw.dev·2023년 3월 13일
0

Python

목록 보기
3/7

딕셔너리

요소의 위치가 따로 존재하지 않음. 특정 순서가 없다.(컴퓨터의 관점)
key, value 형태로 이루어져있는 매핑타입의 자료형
이러한 특징 때문에 검색속도가 일반적으로는 list, tuple보다 빠르다 but 1만건 이하 or 데이터의 위에 따라 달라질 수 있음
key값 중복X, value는 가능

사용시 주의사항
key, value 선언 규칙을 이해

  • key :
  • value : 모든 타입 사용가능
dic1 = {'apple' : '사과',
        '김범수' : '쿵푸팬더',
        '김범수' : '보고싶다'}
print(dic1['김범수'])

dic2 = {'chojunmo' : '남자1호',
        '조준모' : [972, '피본남', '예비신랑', '디스남', '꼬ㅊ미남', '씨파이썬'],
        '조충모' : '물린남'}
print(dic2)


dic3 = {'chojunmo' : '남자1호',
        '조준모의 제자들' : {'김지혜' : '겅듀',
                            '장재호' : '피카소',
                            '김규동' : '댄스왕황룡',
                            '신진영' : '신전일',
                      },
        '조충모' : '물린남'}
print(dic3['조준모의 제자들']['김지혜'])
# 딕셔너리 관련 함수
# keys(), values(), items(), clear(), get(), pop(), update()
dict1 = {'이름' : '성기훈',
         '전화번호': '01012345678',
         '생년월일': 1030,
         '사는곳':'쌍문동',
         '성격':'이타적임'
         }
#key / value값만 따로 가져오기
# keys / values
# 변수명.keys/ 변수명.values()
#print(dict1.keys())
#print(dict1.values())

#key, value를 쌍으로 가져오기
#items / 변수.items
#print(dict1.items())

# 딕셔너리 완전 비우기
# clear / 변수.clear()
dict1.clear()
#print(dict1)

# pop / 특정한 key값을 삭제하고 삭제된 key에 대한 value를 리턴.
# 변수.pop(key값)
dict1 = {'이름' : '성기훈',
         '전화번호': '01012345678',
         '생년월일': 1030,
         '사는곳':'쌍문동',
         '성격':'이타적임'
         }
print(dict1.pop('생년월일'))
print(dict1)


# get
# key값으로 value를 얻는 함수
# 변수.get(키값)
# 일반적인 키값 입력과 똑같아 보이지만
# 해당 key값이 없을때 차이점이 있음.
test1 = dict1.get('으하하하')
print(test1)
#dict1['으하하하']
# get 함수 사용유무 차이
# get 함수를 사용했을때 key값이 없다면 none을 출력한다
# (일반적으로 key값이 없다면 keyerror 발생)

dict1 = {'이름' : '성기훈',
         '전화번호': '01012345678',
         '생년월일': 1030,
         '사는곳':'쌍문동',
         '성격':'이타적임'
         }
# in
# 어떠한 리스트, 딕셔너리, 문자에서 특정한 값이 있는가를 찾아보고
# 있으면 true 없으면 false를 출력
# 딕셔너리에서는 key값만 검색 가능.
# '찾는값' in 변수명

연습예제

# 다음의 리스트를 확인하시고 문제 3번, 4번을 풀어주세요  
quiz3 = [11,27,18,44,55,66,12,24,32]

# 문제3
# quiz3 리스트의 저장된 데이터의 개수를 모두 출력해보세요
print(len(quiz3))

# 문제4 
# quiz3 리스트의 합계와 평균을 구해보세요.
print(sum(quiz3))
print(sum(quiz3)/len(quiz3))


#문제 6~8번 공통 list
#문제를 잘 읽고 해당 결과를 출력해주세요
quiz = [11, 34, 25, 18, 27, 10, 53]
# 문제6
# 리스트에서 홀수와 짝수 들의 총합과 평균을 출력해보세요
print(sum(quiz[0::2]))
print(sum(quiz[1::2]))
print(sum(quiz[0::2])/len(quiz[0::2]))
print(sum(quiz[1::2])/len(quiz[1::2]))

# 문제7
# list1에서 최대값과 최소값을 출력해주세요
# 힌트 : max함수와 min 함수를 이용하면 쉽게 푸실수 있습니다.
#        구글에서 python max min 을 검색해주세요.
print(max(quiz))
print(min(quiz))

# 문제8
# quiz 요소의 전체 합과 평균을 출력해주세요
print(sum(quiz))
print(sum(quiz)/len(quiz))

# 문제 9
# 다음의 리스트에서 요구사항의 결과에 맞는 값을 출력해보세요
quiz2 = [10,11,12,13,14,15,16]

# 짝수만 출력해보세요
# 홀수만 출력해보세요
# 짝수의 평균값에서 홀수의 평균값을 뺀 결과를 출력해보세요.
print(quiz2[0::2])
print(quiz2[1::2])
print(sum(quiz2[0::2])/len(quiz2[0::2]))
print(sum(quiz2[1::2])/len(quiz2[1::2]))
print(sum(quiz2[0::2])/len(quiz2[0::2]) - sum(quiz2[1::2])/len(quiz2[1::2]) )

#문제2~6
# 문제2
# 다음과 같은 표를 딕셔너리 형태로 저장하세요
# 딕셔너리 변수 이름은 icecream으로 만드세요
# 이름	     가격	    재고
# 누가바	  500	     20
# 탱크보이    250	     3
# 더위사냥	  650	     100     
# 구구콘      900        50
# 폴라포      250        7

icecream = {
    "누가바": {"가격": 500, "재고": 20},
    "탱크보이": {"가격": 250, "재고": 3},
    "더위사냥": {"가격": 650, "재고": 100},
    "구구콘": {"가격": 900, "재고": 50},
    "폴라포": {"가격": 250, "재고": 7}
}

print(icecream)

# 문제3
# icecream 딕셔너리에서 구구콘의 가격만 출력하세요
# 실행결과 : 900원
print(icecream["구구콘"]["가격"])


# 문제4 : icecream 딕셔너리에서 key값만 출력해보세요
print(icecream.keys())

# 문제5 : icecream 딕셔너리에서 value값만 출력해보세요
print(icecream.values())

# 문제6 : icecream 딕셔너리에서 구구콘을 삭제하세요 <-----
del icecream["구구콘"]
print(icecream)

#문제7~10

snack = {'바나나킥': 1500, 
         '다이제': 2500, 
         '꽃게랑': 1300, 
         '새우깡': 2000, 
         '오감자': 1800}
# 문제7: snack 딕셔너리에서 key값으로만 구성된 리스트를 생성하세요
print(list(snack.keys()))

# 문제8: snack 딕셔너리에서 value값으로만 구성된 리스트를 생성하세요
print(list(snack.values()))

# 문제9: snack 딕셔너리에서 판매금액 총합을 출력하세요
snackSum = list(snack.values())
print(sum(snackSum))

# 문제10: snack 딕셔너리에서 새우깡과 오감자를 제외한 물품의 총합을 출력하세요
print(sum(snackSum[0:3]))
profile
백엔드 개발 공부 기록 22.11.07 ~ ing

0개의 댓글