파이썬 기초편(1) - 딕셔너리(Dictionary) 본문
● 딕셔너리의 이해
# 형태 : {키(key) : 값(value)}
dc1 = {'코카콜라':900, '바나나맛우유':750, '비타500':600, '삼다수':450}
dc2 = {'코카콜라':(900, '탄산음료'), '바나나맛우유':[750, '유제품']}
'''
키와 값은 무엇이든 될 수 있다. 단 리스트는 키로 둘 수 없다
'값'은 중복되어도 괜찮지만 '키'는 중복될 수 없다(같은 키를 여러개 저장하면 마지막 저장된 데이터만 남는다)
하나의 딕셔너리 안에 동일한 '키'가 둘 이상 존재할 수 없다
'''
● 딕셔너리의 데이터 참조, 수정, 추가, 삭제
dc = {'코카콜라':900, '바나나맛우유':750, '비타500':600, '삼다수':450}
# 삼다수의 가격이 얼마야?
v = dc['삼다수'] # 형태는 인덱싱 연산을 하는 것과 같은데, 이때 인덱스 값을 대신해서 '키'를 사용하게 된다
# 삼다수의 가격이 100원 올랐다
dc['삼다수'] = 550 # 삼다수에 해당하는 값을 550으로 수정
dc['삼다수'] += 100 # 이렇게 수정해도 된다
# 메뉴추가: 이름은 카페라떼, 가격은 1300원
dc['카페라떼'] = 1300 # 키가 없는 상황에서 연산을 하면 이는 데이터의 추가로 이어진다
# 비타500을 dc에서 빼줘
del dc['비타500'] # del 명령어를 통해서 데이터를 삭제할 수 있다
● 연산자 == 을 대상으로 관찰하는 딕셔너리의 성격
t1, t2, t3 = [1,2,3], [1,2,3], [3,2,1]
t1 == t2 # True
t1 == t3 # False, 저장 순서가 다르기 때문에
'''
두 리스트의 == 연산의 결과가 True이려면, 저장된 값과 순서가 모두 같아야 한다
'''
d1, d2, d3 = {1:'a', 2:'b'}, {1:'a', 2:'b'}, {2:'b', 1:'a'}
d1 == d2 # True
d1 == d3 # True, 저장 순서가 달라도 True가 나온다
'''
딕셔너리의 데이터는 저장 순서가 의미가 없다
'''
파이썬은 딕셔너리에 저장된 데이터의 저장 순서에 관심이 없다. 저장 순서를 기억할 필요가 없는(저장순서가 의미없는) 데이터들을 담기 위해 만들어진 것이 딕셔너리이기 때문. 데이터의 종류만 같다면 같은 딕셔너리라 인식한다. 순서가 의미있는 데이터라면 딕셔너리에 담지말자
● in 연산과 not in 연산
dc1, dc2 = {'코카콜라':900, '삼다수':450}, {'새우깡':700, '콘치즈':850}
dc1['새우깡'] = 950 # '새우깡'키가 없는 곳에 수정을 했더니 데이터가 들어갔다
if '새우깡' in dc2:
dc2['새우깡'] = 950
if '카페라떼' not in dc1:
dc1['카페라떼'] = 1200
'''
in 과 not in 연산을 통해서 존재 유무를 확인하는 대상은 '값'이 아니라 '키'이다
'''
● 딕셔너리의 for 루프
dc = {'새우깡':700, '콘치즈':850, '꼬깔콘':750}
for i in dc:
print(i) # 결과: 새우깡, 콘치즈, 꼬깔콘
# i에 저장되는 것은 '키'이다!
# 모든 과자의 가격을 70원 더해줘
for i in dc:
dc[i] += 70 # i에 키 값이 들어가있으니, 인덱싱을 할 때 사용한다
'''
딕셔너리를 대상으로 for루프 구성이 가능하다
실제로는 딕셔너리의 '키'를 대상으로 for루프가 돌아간다
'''
반복문을 통해서 딕셔너리에서 값을 하나씩 뺄 때, 카운터용 변수 i에 들어가는 것은 '키 값'이다.
'Programming > python' 카테고리의 다른 글
파이썬 기초편(1) - 예외처리 (5) | 2022.06.16 |
---|---|
파이썬 기초편(1) - 클래스와 객체 (0) | 2022.06.14 |
파이썬 기초편(1) - '모듈의 이해' 그리고 '수학 모듈' 이용하기 (0) | 2022.06.12 |
파이썬 기초편(1) - 튜플(tuple)과 레인지(range) (0) | 2022.06.10 |
파이썬 기초편(1) - 리스트 (0) | 2022.06.07 |